{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Deep Learning Models -- A collection of various deep learning architectures, models, and tips for TensorFlow and PyTorch in Jupyter Notebooks.\n",
    "- Author: Sebastian Raschka\n",
    "- GitHub Repository: https://github.com/rasbt/deeplearning-models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sebastian Raschka \n",
      "\n",
      "CPython 3.6.8\n",
      "IPython 7.2.0\n",
      "\n",
      "torch 1.0.0\n"
     ]
    }
   ],
   "source": [
    "%load_ext watermark\n",
    "%watermark -a 'Sebastian Raschka' -v -p torch"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- Runs on CPU or GPU (if available)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Zoo -- Convolutional Conditional Variational Autoencoder\n",
    "\n",
    "## (without labels in reconstruction loss)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A simple convolutional conditional variational autoencoder that compresses 768-pixel MNIST images down to a 50-pixel latent vector representation.\n",
    "\n",
    "This implementation DOES NOT concatenate the inputs with the class labels when computing the reconstruction loss in contrast to how it is commonly done in non-convolutional conditional variational autoencoders. Not considering class-labels in the reconstruction loss leads to substantially better results compared to the implementation that does concatenate the labels with the inputs to compute the reconstruction loss. For reference, see the implementation [./autoencoder-cnn-cvae.ipynb](./autoencoder-cnn-cvae.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import numpy as np\n",
    "import torch\n",
    "import torch.nn.functional as F\n",
    "from torch.utils.data import DataLoader\n",
    "from torchvision import datasets\n",
    "from torchvision import transforms\n",
    "\n",
    "\n",
    "if torch.cuda.is_available():\n",
    "    torch.backends.cudnn.deterministic = True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Device: cuda:1\n",
      "Image batch dimensions: torch.Size([128, 1, 28, 28])\n",
      "Image label dimensions: torch.Size([128])\n"
     ]
    }
   ],
   "source": [
    "##########################\n",
    "### SETTINGS\n",
    "##########################\n",
    "\n",
    "# Device\n",
    "device = torch.device(\"cuda:1\" if torch.cuda.is_available() else \"cpu\")\n",
    "print('Device:', device)\n",
    "\n",
    "# Hyperparameters\n",
    "random_seed = 0\n",
    "learning_rate = 0.001\n",
    "num_epochs = 50\n",
    "batch_size = 128\n",
    "\n",
    "# Architecture\n",
    "num_classes = 10\n",
    "num_features = 784\n",
    "num_latent = 50\n",
    "\n",
    "\n",
    "##########################\n",
    "### MNIST DATASET\n",
    "##########################\n",
    "\n",
    "# Note transforms.ToTensor() scales input images\n",
    "# to 0-1 range\n",
    "train_dataset = datasets.MNIST(root='data', \n",
    "                               train=True, \n",
    "                               transform=transforms.ToTensor(),\n",
    "                               download=True)\n",
    "\n",
    "test_dataset = datasets.MNIST(root='data', \n",
    "                              train=False, \n",
    "                              transform=transforms.ToTensor())\n",
    "\n",
    "\n",
    "train_loader = DataLoader(dataset=train_dataset, \n",
    "                          batch_size=batch_size, \n",
    "                          shuffle=True)\n",
    "\n",
    "test_loader = DataLoader(dataset=test_dataset, \n",
    "                         batch_size=batch_size, \n",
    "                         shuffle=False)\n",
    "\n",
    "# Checking the dataset\n",
    "for images, labels in train_loader:  \n",
    "    print('Image batch dimensions:', images.shape)\n",
    "    print('Image label dimensions:', labels.shape)\n",
    "    break"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "##########################\n",
    "### MODEL\n",
    "##########################\n",
    "\n",
    "\n",
    "def to_onehot(labels, num_classes, device):\n",
    "\n",
    "    labels_onehot = torch.zeros(labels.size()[0], num_classes).to(device)\n",
    "    labels_onehot.scatter_(1, labels.view(-1, 1), 1)\n",
    "\n",
    "    return labels_onehot\n",
    "\n",
    "\n",
    "class ConditionalVariationalAutoencoder(torch.nn.Module):\n",
    "\n",
    "    def __init__(self, num_features, num_latent, num_classes):\n",
    "        super(ConditionalVariationalAutoencoder, self).__init__()\n",
    "        \n",
    "        self.num_classes = num_classes\n",
    "        \n",
    "        \n",
    "        ###############\n",
    "        # ENCODER\n",
    "        ##############\n",
    "        \n",
    "        # calculate same padding:\n",
    "        # (w - k + 2*p)/s + 1 = o\n",
    "        # => p = (s(o-1) - w + k)/2\n",
    "\n",
    "        self.enc_conv_1 = torch.nn.Conv2d(in_channels=1+self.num_classes,\n",
    "                                          out_channels=16,\n",
    "                                          kernel_size=(6, 6),\n",
    "                                          stride=(2, 2),\n",
    "                                          padding=0)\n",
    "\n",
    "        self.enc_conv_2 = torch.nn.Conv2d(in_channels=16,\n",
    "                                          out_channels=32,\n",
    "                                          kernel_size=(4, 4),\n",
    "                                          stride=(2, 2),\n",
    "                                          padding=0)                 \n",
    "        \n",
    "        self.enc_conv_3 = torch.nn.Conv2d(in_channels=32,\n",
    "                                          out_channels=64,\n",
    "                                          kernel_size=(2, 2),\n",
    "                                          stride=(2, 2),\n",
    "                                          padding=0)                     \n",
    "        \n",
    "        self.z_mean = torch.nn.Linear(64*2*2, num_latent)\n",
    "        # in the original paper (Kingma & Welling 2015, we use\n",
    "        # have a z_mean and z_var, but the problem is that\n",
    "        # the z_var can be negative, which would cause issues\n",
    "        # in the log later. Hence we assume that latent vector\n",
    "        # has a z_mean and z_log_var component, and when we need\n",
    "        # the regular variance or std_dev, we simply use \n",
    "        # an exponential function\n",
    "        self.z_log_var = torch.nn.Linear(64*2*2, num_latent)\n",
    "        \n",
    "        \n",
    "        \n",
    "        ###############\n",
    "        # DECODER\n",
    "        ##############\n",
    "        \n",
    "        self.dec_linear_1 = torch.nn.Linear(num_latent+self.num_classes, 64*2*2)\n",
    "               \n",
    "        self.dec_deconv_1 = torch.nn.ConvTranspose2d(in_channels=64,\n",
    "                                                     out_channels=32,\n",
    "                                                     kernel_size=(2, 2),\n",
    "                                                     stride=(2, 2),\n",
    "                                                     padding=0)\n",
    "                                 \n",
    "        self.dec_deconv_2 = torch.nn.ConvTranspose2d(in_channels=32,\n",
    "                                                     out_channels=16,\n",
    "                                                     kernel_size=(4, 4),\n",
    "                                                     stride=(3, 3),\n",
    "                                                     padding=1)\n",
    "        \n",
    "        self.dec_deconv_3 = torch.nn.ConvTranspose2d(in_channels=16,\n",
    "                                                     out_channels=1,\n",
    "                                                     kernel_size=(6, 6),\n",
    "                                                     stride=(3, 3),\n",
    "                                                     padding=4)        \n",
    "\n",
    "\n",
    "    def reparameterize(self, z_mu, z_log_var):\n",
    "        # Sample epsilon from standard normal distribution\n",
    "        eps = torch.randn(z_mu.size(0), z_mu.size(1)).to(device)\n",
    "        # note that log(x^2) = 2*log(x); hence divide by 2 to get std_dev\n",
    "        # i.e., std_dev = exp(log(std_dev^2)/2) = exp(log(var)/2)\n",
    "        z = z_mu + eps * torch.exp(z_log_var/2.) \n",
    "        return z\n",
    "        \n",
    "    def encoder(self, features, targets):\n",
    "        \n",
    "        ### Add condition\n",
    "        onehot_targets = to_onehot(targets, self.num_classes, device)\n",
    "        onehot_targets = onehot_targets.view(-1, self.num_classes, 1, 1)\n",
    "        \n",
    "        ones = torch.ones(features.size()[0], \n",
    "                          self.num_classes,\n",
    "                          features.size()[2], \n",
    "                          features.size()[3], \n",
    "                          dtype=features.dtype).to(device)\n",
    "        ones = ones * onehot_targets\n",
    "        x = torch.cat((features, ones), dim=1)\n",
    "        \n",
    "        x = self.enc_conv_1(x)\n",
    "        x = F.leaky_relu(x)\n",
    "        #print('conv1 out:', x.size())\n",
    "        \n",
    "        x = self.enc_conv_2(x)\n",
    "        x = F.leaky_relu(x)\n",
    "        #print('conv2 out:', x.size())\n",
    "        \n",
    "        x = self.enc_conv_3(x)\n",
    "        x = F.leaky_relu(x)\n",
    "        #print('conv3 out:', x.size())\n",
    "        \n",
    "        z_mean = self.z_mean(x.view(-1, 64*2*2))\n",
    "        z_log_var = self.z_log_var(x.view(-1, 64*2*2))\n",
    "        encoded = self.reparameterize(z_mean, z_log_var)\n",
    "        return z_mean, z_log_var, encoded\n",
    "    \n",
    "    def decoder(self, encoded, targets):\n",
    "        ### Add condition\n",
    "        onehot_targets = to_onehot(targets, self.num_classes, device)\n",
    "        encoded = torch.cat((encoded, onehot_targets), dim=1)        \n",
    "        \n",
    "        x = self.dec_linear_1(encoded)\n",
    "        x = x.view(-1, 64, 2, 2)\n",
    "        \n",
    "        x = self.dec_deconv_1(x)\n",
    "        x = F.leaky_relu(x)\n",
    "        #print('deconv1 out:', x.size())\n",
    "        \n",
    "        x = self.dec_deconv_2(x)\n",
    "        x = F.leaky_relu(x)\n",
    "        #print('deconv2 out:', x.size())\n",
    "        \n",
    "        x = self.dec_deconv_3(x)\n",
    "        x = F.leaky_relu(x)\n",
    "        #print('deconv1 out:', x.size())\n",
    "        \n",
    "        decoded = torch.sigmoid(x)\n",
    "        return decoded\n",
    "\n",
    "    def forward(self, features, targets):\n",
    "        \n",
    "        z_mean, z_log_var, encoded = self.encoder(features, targets)\n",
    "        decoded = self.decoder(encoded, targets)\n",
    "        \n",
    "        return z_mean, z_log_var, encoded, decoded\n",
    "\n",
    "    \n",
    "torch.manual_seed(random_seed)\n",
    "model = ConditionalVariationalAutoencoder(num_features,\n",
    "                                          num_latent,\n",
    "                                          num_classes)\n",
    "model = model.to(device)\n",
    "    \n",
    "\n",
    "##########################\n",
    "### COST AND OPTIMIZER\n",
    "##########################\n",
    "\n",
    "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 001/050 | Batch 000/469 | Cost: 69516.4531\n",
      "Epoch: 001/050 | Batch 050/469 | Cost: 65598.3438\n",
      "Epoch: 001/050 | Batch 100/469 | Cost: 38653.3398\n",
      "Epoch: 001/050 | Batch 150/469 | Cost: 31647.0234\n",
      "Epoch: 001/050 | Batch 200/469 | Cost: 29562.4902\n",
      "Epoch: 001/050 | Batch 250/469 | Cost: 27448.7969\n",
      "Epoch: 001/050 | Batch 300/469 | Cost: 27149.4609\n",
      "Epoch: 001/050 | Batch 350/469 | Cost: 25922.6641\n",
      "Epoch: 001/050 | Batch 400/469 | Cost: 25652.2539\n",
      "Epoch: 001/050 | Batch 450/469 | Cost: 25503.6504\n",
      "Time elapsed: 0.15 min\n",
      "Epoch: 002/050 | Batch 000/469 | Cost: 25003.4570\n",
      "Epoch: 002/050 | Batch 050/469 | Cost: 24463.9062\n",
      "Epoch: 002/050 | Batch 100/469 | Cost: 24639.4102\n",
      "Epoch: 002/050 | Batch 150/469 | Cost: 25084.6973\n",
      "Epoch: 002/050 | Batch 200/469 | Cost: 24361.1699\n",
      "Epoch: 002/050 | Batch 250/469 | Cost: 23067.3418\n",
      "Epoch: 002/050 | Batch 300/469 | Cost: 23340.0000\n",
      "Epoch: 002/050 | Batch 350/469 | Cost: 22182.6523\n",
      "Epoch: 002/050 | Batch 400/469 | Cost: 23848.3574\n",
      "Epoch: 002/050 | Batch 450/469 | Cost: 22587.1523\n",
      "Time elapsed: 0.29 min\n",
      "Epoch: 003/050 | Batch 000/469 | Cost: 23024.4629\n",
      "Epoch: 003/050 | Batch 050/469 | Cost: 22733.5449\n",
      "Epoch: 003/050 | Batch 100/469 | Cost: 21335.1270\n",
      "Epoch: 003/050 | Batch 150/469 | Cost: 22196.0801\n",
      "Epoch: 003/050 | Batch 200/469 | Cost: 21967.5898\n",
      "Epoch: 003/050 | Batch 250/469 | Cost: 21690.1719\n",
      "Epoch: 003/050 | Batch 300/469 | Cost: 21659.4297\n",
      "Epoch: 003/050 | Batch 350/469 | Cost: 20510.7891\n",
      "Epoch: 003/050 | Batch 400/469 | Cost: 21242.7695\n",
      "Epoch: 003/050 | Batch 450/469 | Cost: 20785.4922\n",
      "Time elapsed: 0.44 min\n",
      "Epoch: 004/050 | Batch 000/469 | Cost: 20328.3145\n",
      "Epoch: 004/050 | Batch 050/469 | Cost: 20273.4453\n",
      "Epoch: 004/050 | Batch 100/469 | Cost: 20539.0879\n",
      "Epoch: 004/050 | Batch 150/469 | Cost: 20137.0156\n",
      "Epoch: 004/050 | Batch 200/469 | Cost: 19641.2148\n",
      "Epoch: 004/050 | Batch 250/469 | Cost: 20138.8418\n",
      "Epoch: 004/050 | Batch 300/469 | Cost: 18882.3086\n",
      "Epoch: 004/050 | Batch 350/469 | Cost: 19263.8516\n",
      "Epoch: 004/050 | Batch 400/469 | Cost: 19991.0703\n",
      "Epoch: 004/050 | Batch 450/469 | Cost: 18806.1582\n",
      "Time elapsed: 0.58 min\n",
      "Epoch: 005/050 | Batch 000/469 | Cost: 19555.3555\n",
      "Epoch: 005/050 | Batch 050/469 | Cost: 19259.2910\n",
      "Epoch: 005/050 | Batch 100/469 | Cost: 18361.7383\n",
      "Epoch: 005/050 | Batch 150/469 | Cost: 18087.8281\n",
      "Epoch: 005/050 | Batch 200/469 | Cost: 18091.0488\n",
      "Epoch: 005/050 | Batch 250/469 | Cost: 19610.8906\n",
      "Epoch: 005/050 | Batch 300/469 | Cost: 17971.9766\n",
      "Epoch: 005/050 | Batch 350/469 | Cost: 18295.7988\n",
      "Epoch: 005/050 | Batch 400/469 | Cost: 18726.7246\n",
      "Epoch: 005/050 | Batch 450/469 | Cost: 17738.4590\n",
      "Time elapsed: 0.73 min\n",
      "Epoch: 006/050 | Batch 000/469 | Cost: 18221.9043\n",
      "Epoch: 006/050 | Batch 050/469 | Cost: 18209.2578\n",
      "Epoch: 006/050 | Batch 100/469 | Cost: 17747.5586\n",
      "Epoch: 006/050 | Batch 150/469 | Cost: 16824.4941\n",
      "Epoch: 006/050 | Batch 200/469 | Cost: 17604.7949\n",
      "Epoch: 006/050 | Batch 250/469 | Cost: 17186.1855\n",
      "Epoch: 006/050 | Batch 300/469 | Cost: 17752.4570\n",
      "Epoch: 006/050 | Batch 350/469 | Cost: 17146.1660\n",
      "Epoch: 006/050 | Batch 400/469 | Cost: 17564.4121\n",
      "Epoch: 006/050 | Batch 450/469 | Cost: 16982.0527\n",
      "Time elapsed: 0.88 min\n",
      "Epoch: 007/050 | Batch 000/469 | Cost: 17229.5156\n",
      "Epoch: 007/050 | Batch 050/469 | Cost: 17952.2988\n",
      "Epoch: 007/050 | Batch 100/469 | Cost: 17679.9102\n",
      "Epoch: 007/050 | Batch 150/469 | Cost: 16431.1602\n",
      "Epoch: 007/050 | Batch 200/469 | Cost: 16707.6699\n",
      "Epoch: 007/050 | Batch 250/469 | Cost: 16626.2344\n",
      "Epoch: 007/050 | Batch 300/469 | Cost: 17091.8594\n",
      "Epoch: 007/050 | Batch 350/469 | Cost: 16410.7461\n",
      "Epoch: 007/050 | Batch 400/469 | Cost: 16464.0039\n",
      "Epoch: 007/050 | Batch 450/469 | Cost: 17185.2910\n",
      "Time elapsed: 1.03 min\n",
      "Epoch: 008/050 | Batch 000/469 | Cost: 16310.5146\n",
      "Epoch: 008/050 | Batch 050/469 | Cost: 16510.9883\n",
      "Epoch: 008/050 | Batch 100/469 | Cost: 16409.1504\n",
      "Epoch: 008/050 | Batch 150/469 | Cost: 16645.9414\n",
      "Epoch: 008/050 | Batch 200/469 | Cost: 16140.7637\n",
      "Epoch: 008/050 | Batch 250/469 | Cost: 16261.8232\n",
      "Epoch: 008/050 | Batch 300/469 | Cost: 15731.7832\n",
      "Epoch: 008/050 | Batch 350/469 | Cost: 16438.5391\n",
      "Epoch: 008/050 | Batch 400/469 | Cost: 16522.8516\n",
      "Epoch: 008/050 | Batch 450/469 | Cost: 16674.2656\n",
      "Time elapsed: 1.18 min\n",
      "Epoch: 009/050 | Batch 000/469 | Cost: 15663.1904\n",
      "Epoch: 009/050 | Batch 050/469 | Cost: 15857.3770\n",
      "Epoch: 009/050 | Batch 100/469 | Cost: 16233.4707\n",
      "Epoch: 009/050 | Batch 150/469 | Cost: 16635.9785\n",
      "Epoch: 009/050 | Batch 200/469 | Cost: 16294.5547\n",
      "Epoch: 009/050 | Batch 250/469 | Cost: 15947.5801\n",
      "Epoch: 009/050 | Batch 300/469 | Cost: 16139.6113\n",
      "Epoch: 009/050 | Batch 350/469 | Cost: 16081.8906\n",
      "Epoch: 009/050 | Batch 400/469 | Cost: 16331.2500\n",
      "Epoch: 009/050 | Batch 450/469 | Cost: 15352.7773\n",
      "Time elapsed: 1.32 min\n",
      "Epoch: 010/050 | Batch 000/469 | Cost: 15708.1094\n",
      "Epoch: 010/050 | Batch 050/469 | Cost: 16146.4141\n",
      "Epoch: 010/050 | Batch 100/469 | Cost: 16003.0078\n",
      "Epoch: 010/050 | Batch 150/469 | Cost: 14990.0430\n",
      "Epoch: 010/050 | Batch 200/469 | Cost: 15628.8242\n",
      "Epoch: 010/050 | Batch 250/469 | Cost: 15949.3691\n",
      "Epoch: 010/050 | Batch 300/469 | Cost: 14936.1875\n",
      "Epoch: 010/050 | Batch 350/469 | Cost: 15196.0625\n",
      "Epoch: 010/050 | Batch 400/469 | Cost: 15594.7686\n",
      "Epoch: 010/050 | Batch 450/469 | Cost: 16577.6230\n",
      "Time elapsed: 1.47 min\n",
      "Epoch: 011/050 | Batch 000/469 | Cost: 15626.6035\n",
      "Epoch: 011/050 | Batch 050/469 | Cost: 15766.5859\n",
      "Epoch: 011/050 | Batch 100/469 | Cost: 16134.7734\n",
      "Epoch: 011/050 | Batch 150/469 | Cost: 15299.3574\n",
      "Epoch: 011/050 | Batch 200/469 | Cost: 15611.9248\n",
      "Epoch: 011/050 | Batch 250/469 | Cost: 16024.9580\n",
      "Epoch: 011/050 | Batch 300/469 | Cost: 15840.3047\n",
      "Epoch: 011/050 | Batch 350/469 | Cost: 15214.9883\n",
      "Epoch: 011/050 | Batch 400/469 | Cost: 15782.8574\n",
      "Epoch: 011/050 | Batch 450/469 | Cost: 15268.2646\n",
      "Time elapsed: 1.62 min\n",
      "Epoch: 012/050 | Batch 000/469 | Cost: 15584.0322\n",
      "Epoch: 012/050 | Batch 050/469 | Cost: 15752.2871\n",
      "Epoch: 012/050 | Batch 100/469 | Cost: 15630.2695\n",
      "Epoch: 012/050 | Batch 150/469 | Cost: 15513.7822\n",
      "Epoch: 012/050 | Batch 200/469 | Cost: 15230.1543\n",
      "Epoch: 012/050 | Batch 250/469 | Cost: 14979.2441\n",
      "Epoch: 012/050 | Batch 300/469 | Cost: 15661.2822\n",
      "Epoch: 012/050 | Batch 350/469 | Cost: 14583.6562\n",
      "Epoch: 012/050 | Batch 400/469 | Cost: 15692.2637\n",
      "Epoch: 012/050 | Batch 450/469 | Cost: 15444.3398\n",
      "Time elapsed: 1.76 min\n",
      "Epoch: 013/050 | Batch 000/469 | Cost: 15403.8340\n",
      "Epoch: 013/050 | Batch 050/469 | Cost: 15334.1270\n",
      "Epoch: 013/050 | Batch 100/469 | Cost: 14869.9678\n",
      "Epoch: 013/050 | Batch 150/469 | Cost: 14967.7734\n",
      "Epoch: 013/050 | Batch 200/469 | Cost: 15038.3467\n",
      "Epoch: 013/050 | Batch 250/469 | Cost: 14940.0566\n",
      "Epoch: 013/050 | Batch 300/469 | Cost: 15861.9902\n",
      "Epoch: 013/050 | Batch 350/469 | Cost: 15016.0215\n",
      "Epoch: 013/050 | Batch 400/469 | Cost: 15020.5508\n",
      "Epoch: 013/050 | Batch 450/469 | Cost: 14558.9678\n",
      "Time elapsed: 1.91 min\n",
      "Epoch: 014/050 | Batch 000/469 | Cost: 15571.9609\n",
      "Epoch: 014/050 | Batch 050/469 | Cost: 14986.8027\n",
      "Epoch: 014/050 | Batch 100/469 | Cost: 14748.6660\n",
      "Epoch: 014/050 | Batch 150/469 | Cost: 15177.5010\n",
      "Epoch: 014/050 | Batch 200/469 | Cost: 15166.5283\n",
      "Epoch: 014/050 | Batch 250/469 | Cost: 14866.0449\n",
      "Epoch: 014/050 | Batch 300/469 | Cost: 15227.5977\n",
      "Epoch: 014/050 | Batch 350/469 | Cost: 15148.1973\n",
      "Epoch: 014/050 | Batch 400/469 | Cost: 15003.9395\n",
      "Epoch: 014/050 | Batch 450/469 | Cost: 15571.9531\n",
      "Time elapsed: 2.06 min\n",
      "Epoch: 015/050 | Batch 000/469 | Cost: 15100.7773\n",
      "Epoch: 015/050 | Batch 050/469 | Cost: 14556.3730\n",
      "Epoch: 015/050 | Batch 100/469 | Cost: 15114.8965\n",
      "Epoch: 015/050 | Batch 150/469 | Cost: 15237.2412\n",
      "Epoch: 015/050 | Batch 200/469 | Cost: 15173.2842\n",
      "Epoch: 015/050 | Batch 250/469 | Cost: 15283.6016\n",
      "Epoch: 015/050 | Batch 300/469 | Cost: 14717.9834\n",
      "Epoch: 015/050 | Batch 350/469 | Cost: 15098.9512\n",
      "Epoch: 015/050 | Batch 400/469 | Cost: 14483.3516\n",
      "Epoch: 015/050 | Batch 450/469 | Cost: 14874.4346\n",
      "Time elapsed: 2.21 min\n",
      "Epoch: 016/050 | Batch 000/469 | Cost: 14778.4883\n",
      "Epoch: 016/050 | Batch 050/469 | Cost: 14571.5068\n",
      "Epoch: 016/050 | Batch 100/469 | Cost: 14361.2773\n",
      "Epoch: 016/050 | Batch 150/469 | Cost: 14580.1055\n",
      "Epoch: 016/050 | Batch 200/469 | Cost: 14950.4766\n",
      "Epoch: 016/050 | Batch 250/469 | Cost: 14357.0742\n",
      "Epoch: 016/050 | Batch 300/469 | Cost: 15067.2119\n",
      "Epoch: 016/050 | Batch 350/469 | Cost: 14431.0293\n",
      "Epoch: 016/050 | Batch 400/469 | Cost: 15010.4941\n",
      "Epoch: 016/050 | Batch 450/469 | Cost: 14981.4385\n",
      "Time elapsed: 2.35 min\n",
      "Epoch: 017/050 | Batch 000/469 | Cost: 14213.7207\n",
      "Epoch: 017/050 | Batch 050/469 | Cost: 14254.8223\n",
      "Epoch: 017/050 | Batch 100/469 | Cost: 14608.7031\n",
      "Epoch: 017/050 | Batch 150/469 | Cost: 14804.6738\n",
      "Epoch: 017/050 | Batch 200/469 | Cost: 15223.3574\n",
      "Epoch: 017/050 | Batch 250/469 | Cost: 15073.8105\n",
      "Epoch: 017/050 | Batch 300/469 | Cost: 14488.2256\n",
      "Epoch: 017/050 | Batch 350/469 | Cost: 15285.3438\n",
      "Epoch: 017/050 | Batch 400/469 | Cost: 14768.0410\n",
      "Epoch: 017/050 | Batch 450/469 | Cost: 14246.4082\n",
      "Time elapsed: 2.49 min\n",
      "Epoch: 018/050 | Batch 000/469 | Cost: 14446.7607\n",
      "Epoch: 018/050 | Batch 050/469 | Cost: 14307.9512\n",
      "Epoch: 018/050 | Batch 100/469 | Cost: 14979.2393\n",
      "Epoch: 018/050 | Batch 150/469 | Cost: 14640.7529\n",
      "Epoch: 018/050 | Batch 200/469 | Cost: 14336.5176\n",
      "Epoch: 018/050 | Batch 250/469 | Cost: 14856.0244\n",
      "Epoch: 018/050 | Batch 300/469 | Cost: 14236.4883\n",
      "Epoch: 018/050 | Batch 350/469 | Cost: 14293.7129\n",
      "Epoch: 018/050 | Batch 400/469 | Cost: 14989.7578\n",
      "Epoch: 018/050 | Batch 450/469 | Cost: 14645.5918\n",
      "Time elapsed: 2.63 min\n",
      "Epoch: 019/050 | Batch 000/469 | Cost: 14769.7305\n",
      "Epoch: 019/050 | Batch 050/469 | Cost: 14644.3301\n",
      "Epoch: 019/050 | Batch 100/469 | Cost: 14153.6289\n",
      "Epoch: 019/050 | Batch 150/469 | Cost: 15014.8457\n",
      "Epoch: 019/050 | Batch 200/469 | Cost: 14531.8291\n",
      "Epoch: 019/050 | Batch 250/469 | Cost: 14103.4414\n",
      "Epoch: 019/050 | Batch 300/469 | Cost: 14499.4141\n",
      "Epoch: 019/050 | Batch 350/469 | Cost: 14517.2227\n",
      "Epoch: 019/050 | Batch 400/469 | Cost: 14708.0664\n",
      "Epoch: 019/050 | Batch 450/469 | Cost: 14042.7529\n",
      "Time elapsed: 2.77 min\n",
      "Epoch: 020/050 | Batch 000/469 | Cost: 15051.2266\n",
      "Epoch: 020/050 | Batch 050/469 | Cost: 14537.1982\n",
      "Epoch: 020/050 | Batch 100/469 | Cost: 13989.1104\n",
      "Epoch: 020/050 | Batch 150/469 | Cost: 14822.6094\n",
      "Epoch: 020/050 | Batch 200/469 | Cost: 15177.9668\n",
      "Epoch: 020/050 | Batch 250/469 | Cost: 14710.3174\n",
      "Epoch: 020/050 | Batch 300/469 | Cost: 13794.1641\n",
      "Epoch: 020/050 | Batch 350/469 | Cost: 14262.4473\n",
      "Epoch: 020/050 | Batch 400/469 | Cost: 14950.7432\n",
      "Epoch: 020/050 | Batch 450/469 | Cost: 14864.3555\n",
      "Time elapsed: 2.91 min\n",
      "Epoch: 021/050 | Batch 000/469 | Cost: 15020.9473\n",
      "Epoch: 021/050 | Batch 050/469 | Cost: 14729.3340\n",
      "Epoch: 021/050 | Batch 100/469 | Cost: 14100.7500\n",
      "Epoch: 021/050 | Batch 150/469 | Cost: 14151.6641\n",
      "Epoch: 021/050 | Batch 200/469 | Cost: 14153.0459\n",
      "Epoch: 021/050 | Batch 250/469 | Cost: 14365.5645\n",
      "Epoch: 021/050 | Batch 300/469 | Cost: 14539.5244\n",
      "Epoch: 021/050 | Batch 350/469 | Cost: 14018.8398\n",
      "Epoch: 021/050 | Batch 400/469 | Cost: 14032.9209\n",
      "Epoch: 021/050 | Batch 450/469 | Cost: 13872.8320\n",
      "Time elapsed: 3.06 min\n",
      "Epoch: 022/050 | Batch 000/469 | Cost: 14742.1719\n",
      "Epoch: 022/050 | Batch 050/469 | Cost: 14320.2646\n",
      "Epoch: 022/050 | Batch 100/469 | Cost: 14856.3320\n",
      "Epoch: 022/050 | Batch 150/469 | Cost: 14376.0273\n",
      "Epoch: 022/050 | Batch 200/469 | Cost: 14115.4121\n",
      "Epoch: 022/050 | Batch 250/469 | Cost: 13767.6973\n",
      "Epoch: 022/050 | Batch 300/469 | Cost: 13885.6768\n",
      "Epoch: 022/050 | Batch 350/469 | Cost: 15135.5273\n",
      "Epoch: 022/050 | Batch 400/469 | Cost: 14869.7598\n",
      "Epoch: 022/050 | Batch 450/469 | Cost: 13792.0283\n",
      "Time elapsed: 3.20 min\n",
      "Epoch: 023/050 | Batch 000/469 | Cost: 14404.2324\n",
      "Epoch: 023/050 | Batch 050/469 | Cost: 14076.9844\n",
      "Epoch: 023/050 | Batch 100/469 | Cost: 14239.1904\n",
      "Epoch: 023/050 | Batch 150/469 | Cost: 14376.3242\n",
      "Epoch: 023/050 | Batch 200/469 | Cost: 13941.0156\n",
      "Epoch: 023/050 | Batch 250/469 | Cost: 13948.4395\n",
      "Epoch: 023/050 | Batch 300/469 | Cost: 15119.5137\n",
      "Epoch: 023/050 | Batch 350/469 | Cost: 14480.1211\n",
      "Epoch: 023/050 | Batch 400/469 | Cost: 14310.3594\n",
      "Epoch: 023/050 | Batch 450/469 | Cost: 14712.5039\n",
      "Time elapsed: 3.34 min\n",
      "Epoch: 024/050 | Batch 000/469 | Cost: 14535.5488\n",
      "Epoch: 024/050 | Batch 050/469 | Cost: 14241.1660\n",
      "Epoch: 024/050 | Batch 100/469 | Cost: 14769.8477\n",
      "Epoch: 024/050 | Batch 150/469 | Cost: 15056.7559\n",
      "Epoch: 024/050 | Batch 200/469 | Cost: 14387.6484\n",
      "Epoch: 024/050 | Batch 250/469 | Cost: 14316.7148\n",
      "Epoch: 024/050 | Batch 300/469 | Cost: 14848.7793\n",
      "Epoch: 024/050 | Batch 350/469 | Cost: 14909.2490\n",
      "Epoch: 024/050 | Batch 400/469 | Cost: 14848.7090\n",
      "Epoch: 024/050 | Batch 450/469 | Cost: 14461.7627\n",
      "Time elapsed: 3.48 min\n",
      "Epoch: 025/050 | Batch 000/469 | Cost: 14212.7168\n",
      "Epoch: 025/050 | Batch 050/469 | Cost: 14333.6973\n",
      "Epoch: 025/050 | Batch 100/469 | Cost: 14074.0586\n",
      "Epoch: 025/050 | Batch 150/469 | Cost: 14331.3789\n",
      "Epoch: 025/050 | Batch 200/469 | Cost: 13657.7471\n",
      "Epoch: 025/050 | Batch 250/469 | Cost: 14190.0117\n",
      "Epoch: 025/050 | Batch 300/469 | Cost: 13733.5908\n",
      "Epoch: 025/050 | Batch 350/469 | Cost: 14021.1602\n",
      "Epoch: 025/050 | Batch 400/469 | Cost: 13840.4336\n",
      "Epoch: 025/050 | Batch 450/469 | Cost: 14060.3848\n",
      "Time elapsed: 3.63 min\n",
      "Epoch: 026/050 | Batch 000/469 | Cost: 15362.9629\n",
      "Epoch: 026/050 | Batch 050/469 | Cost: 14140.0303\n",
      "Epoch: 026/050 | Batch 100/469 | Cost: 13597.3838\n",
      "Epoch: 026/050 | Batch 150/469 | Cost: 14821.4492\n",
      "Epoch: 026/050 | Batch 200/469 | Cost: 14879.7930\n",
      "Epoch: 026/050 | Batch 250/469 | Cost: 14080.9072\n",
      "Epoch: 026/050 | Batch 300/469 | Cost: 14645.4023\n",
      "Epoch: 026/050 | Batch 350/469 | Cost: 13696.6152\n",
      "Epoch: 026/050 | Batch 400/469 | Cost: 14472.7656\n",
      "Epoch: 026/050 | Batch 450/469 | Cost: 14059.6641\n",
      "Time elapsed: 3.78 min\n",
      "Epoch: 027/050 | Batch 000/469 | Cost: 14369.2246\n",
      "Epoch: 027/050 | Batch 050/469 | Cost: 13632.5137\n",
      "Epoch: 027/050 | Batch 100/469 | Cost: 13472.9004\n",
      "Epoch: 027/050 | Batch 150/469 | Cost: 13673.4121\n",
      "Epoch: 027/050 | Batch 200/469 | Cost: 14124.0625\n",
      "Epoch: 027/050 | Batch 250/469 | Cost: 13920.0332\n",
      "Epoch: 027/050 | Batch 300/469 | Cost: 13909.5391\n",
      "Epoch: 027/050 | Batch 350/469 | Cost: 14398.0977\n",
      "Epoch: 027/050 | Batch 400/469 | Cost: 14438.4854\n",
      "Epoch: 027/050 | Batch 450/469 | Cost: 14019.9814\n",
      "Time elapsed: 3.93 min\n",
      "Epoch: 028/050 | Batch 000/469 | Cost: 14063.9189\n",
      "Epoch: 028/050 | Batch 050/469 | Cost: 14298.8477\n",
      "Epoch: 028/050 | Batch 100/469 | Cost: 13534.4980\n",
      "Epoch: 028/050 | Batch 150/469 | Cost: 13799.8779\n",
      "Epoch: 028/050 | Batch 200/469 | Cost: 13730.7334\n",
      "Epoch: 028/050 | Batch 250/469 | Cost: 13006.5938\n",
      "Epoch: 028/050 | Batch 300/469 | Cost: 14268.8652\n",
      "Epoch: 028/050 | Batch 350/469 | Cost: 13673.4648\n",
      "Epoch: 028/050 | Batch 400/469 | Cost: 13597.6719\n",
      "Epoch: 028/050 | Batch 450/469 | Cost: 13925.3242\n",
      "Time elapsed: 4.08 min\n",
      "Epoch: 029/050 | Batch 000/469 | Cost: 14032.7266\n",
      "Epoch: 029/050 | Batch 050/469 | Cost: 14527.6777\n",
      "Epoch: 029/050 | Batch 100/469 | Cost: 14219.7266\n",
      "Epoch: 029/050 | Batch 150/469 | Cost: 13933.3320\n",
      "Epoch: 029/050 | Batch 200/469 | Cost: 14406.4668\n",
      "Epoch: 029/050 | Batch 250/469 | Cost: 13692.3379\n",
      "Epoch: 029/050 | Batch 300/469 | Cost: 13557.2705\n",
      "Epoch: 029/050 | Batch 350/469 | Cost: 14528.8633\n",
      "Epoch: 029/050 | Batch 400/469 | Cost: 14413.3438\n",
      "Epoch: 029/050 | Batch 450/469 | Cost: 14293.6504\n",
      "Time elapsed: 4.23 min\n",
      "Epoch: 030/050 | Batch 000/469 | Cost: 14673.0938\n",
      "Epoch: 030/050 | Batch 050/469 | Cost: 14199.3184\n",
      "Epoch: 030/050 | Batch 100/469 | Cost: 14027.1729\n",
      "Epoch: 030/050 | Batch 150/469 | Cost: 14117.5713\n",
      "Epoch: 030/050 | Batch 200/469 | Cost: 13543.0605\n",
      "Epoch: 030/050 | Batch 250/469 | Cost: 14418.0820\n",
      "Epoch: 030/050 | Batch 300/469 | Cost: 13932.8691\n",
      "Epoch: 030/050 | Batch 350/469 | Cost: 13475.8350\n",
      "Epoch: 030/050 | Batch 400/469 | Cost: 14393.7646\n",
      "Epoch: 030/050 | Batch 450/469 | Cost: 14195.9902\n",
      "Time elapsed: 4.37 min\n",
      "Epoch: 031/050 | Batch 000/469 | Cost: 13865.0762\n",
      "Epoch: 031/050 | Batch 050/469 | Cost: 13816.7061\n",
      "Epoch: 031/050 | Batch 100/469 | Cost: 13752.8525\n",
      "Epoch: 031/050 | Batch 150/469 | Cost: 14141.7930\n",
      "Epoch: 031/050 | Batch 200/469 | Cost: 14415.1172\n",
      "Epoch: 031/050 | Batch 250/469 | Cost: 13907.3770\n",
      "Epoch: 031/050 | Batch 300/469 | Cost: 13910.6807\n",
      "Epoch: 031/050 | Batch 350/469 | Cost: 13633.5596\n",
      "Epoch: 031/050 | Batch 400/469 | Cost: 13621.3359\n",
      "Epoch: 031/050 | Batch 450/469 | Cost: 13538.8291\n",
      "Time elapsed: 4.52 min\n",
      "Epoch: 032/050 | Batch 000/469 | Cost: 14009.0742\n",
      "Epoch: 032/050 | Batch 050/469 | Cost: 13491.7461\n",
      "Epoch: 032/050 | Batch 100/469 | Cost: 13270.1104\n",
      "Epoch: 032/050 | Batch 150/469 | Cost: 14276.8320\n",
      "Epoch: 032/050 | Batch 200/469 | Cost: 13928.1875\n",
      "Epoch: 032/050 | Batch 250/469 | Cost: 13973.2520\n",
      "Epoch: 032/050 | Batch 300/469 | Cost: 14112.7969\n",
      "Epoch: 032/050 | Batch 350/469 | Cost: 14247.1250\n",
      "Epoch: 032/050 | Batch 400/469 | Cost: 14020.4355\n",
      "Epoch: 032/050 | Batch 450/469 | Cost: 13671.0029\n",
      "Time elapsed: 4.67 min\n",
      "Epoch: 033/050 | Batch 000/469 | Cost: 14114.7676\n",
      "Epoch: 033/050 | Batch 050/469 | Cost: 14096.6172\n",
      "Epoch: 033/050 | Batch 100/469 | Cost: 14510.5137\n",
      "Epoch: 033/050 | Batch 150/469 | Cost: 14087.4746\n",
      "Epoch: 033/050 | Batch 200/469 | Cost: 13874.9834\n",
      "Epoch: 033/050 | Batch 250/469 | Cost: 14145.5840\n",
      "Epoch: 033/050 | Batch 300/469 | Cost: 13861.3926\n",
      "Epoch: 033/050 | Batch 350/469 | Cost: 14629.8486\n",
      "Epoch: 033/050 | Batch 400/469 | Cost: 14538.3857\n",
      "Epoch: 033/050 | Batch 450/469 | Cost: 13830.5381\n",
      "Time elapsed: 4.82 min\n",
      "Epoch: 034/050 | Batch 000/469 | Cost: 13836.5195\n",
      "Epoch: 034/050 | Batch 050/469 | Cost: 13860.2246\n",
      "Epoch: 034/050 | Batch 100/469 | Cost: 14087.6016\n",
      "Epoch: 034/050 | Batch 150/469 | Cost: 14019.4785\n",
      "Epoch: 034/050 | Batch 200/469 | Cost: 13451.0508\n",
      "Epoch: 034/050 | Batch 250/469 | Cost: 13142.4326\n",
      "Epoch: 034/050 | Batch 300/469 | Cost: 14079.7734\n",
      "Epoch: 034/050 | Batch 350/469 | Cost: 13413.0859\n",
      "Epoch: 034/050 | Batch 400/469 | Cost: 14405.9668\n",
      "Epoch: 034/050 | Batch 450/469 | Cost: 14408.2139\n",
      "Time elapsed: 4.97 min\n",
      "Epoch: 035/050 | Batch 000/469 | Cost: 13902.5938\n",
      "Epoch: 035/050 | Batch 050/469 | Cost: 13920.2412\n",
      "Epoch: 035/050 | Batch 100/469 | Cost: 13912.0137\n",
      "Epoch: 035/050 | Batch 150/469 | Cost: 13720.4482\n",
      "Epoch: 035/050 | Batch 200/469 | Cost: 13858.9121\n",
      "Epoch: 035/050 | Batch 250/469 | Cost: 13355.0986\n",
      "Epoch: 035/050 | Batch 300/469 | Cost: 13733.6855\n",
      "Epoch: 035/050 | Batch 350/469 | Cost: 14387.2490\n",
      "Epoch: 035/050 | Batch 400/469 | Cost: 14289.1094\n",
      "Epoch: 035/050 | Batch 450/469 | Cost: 13157.4883\n",
      "Time elapsed: 5.11 min\n",
      "Epoch: 036/050 | Batch 000/469 | Cost: 13923.4131\n",
      "Epoch: 036/050 | Batch 050/469 | Cost: 13152.2998\n",
      "Epoch: 036/050 | Batch 100/469 | Cost: 13996.1729\n",
      "Epoch: 036/050 | Batch 150/469 | Cost: 13884.8965\n",
      "Epoch: 036/050 | Batch 200/469 | Cost: 13887.7607\n",
      "Epoch: 036/050 | Batch 250/469 | Cost: 13652.5996\n",
      "Epoch: 036/050 | Batch 300/469 | Cost: 13951.4346\n",
      "Epoch: 036/050 | Batch 350/469 | Cost: 13787.7617\n",
      "Epoch: 036/050 | Batch 400/469 | Cost: 14097.5078\n",
      "Epoch: 036/050 | Batch 450/469 | Cost: 13684.4854\n",
      "Time elapsed: 5.26 min\n",
      "Epoch: 037/050 | Batch 000/469 | Cost: 14580.7109\n",
      "Epoch: 037/050 | Batch 050/469 | Cost: 13706.5557\n",
      "Epoch: 037/050 | Batch 100/469 | Cost: 14079.7070\n",
      "Epoch: 037/050 | Batch 150/469 | Cost: 14231.3975\n",
      "Epoch: 037/050 | Batch 200/469 | Cost: 13724.7275\n",
      "Epoch: 037/050 | Batch 250/469 | Cost: 14127.0488\n",
      "Epoch: 037/050 | Batch 300/469 | Cost: 14432.3828\n",
      "Epoch: 037/050 | Batch 350/469 | Cost: 13770.9668\n",
      "Epoch: 037/050 | Batch 400/469 | Cost: 14457.6172\n",
      "Epoch: 037/050 | Batch 450/469 | Cost: 13425.8623\n",
      "Time elapsed: 5.41 min\n",
      "Epoch: 038/050 | Batch 000/469 | Cost: 13763.5371\n",
      "Epoch: 038/050 | Batch 050/469 | Cost: 13891.8945\n",
      "Epoch: 038/050 | Batch 100/469 | Cost: 13626.1357\n",
      "Epoch: 038/050 | Batch 150/469 | Cost: 14679.0449\n",
      "Epoch: 038/050 | Batch 200/469 | Cost: 13221.4004\n",
      "Epoch: 038/050 | Batch 250/469 | Cost: 13140.2148\n",
      "Epoch: 038/050 | Batch 300/469 | Cost: 13809.6084\n",
      "Epoch: 038/050 | Batch 350/469 | Cost: 13575.6592\n",
      "Epoch: 038/050 | Batch 400/469 | Cost: 14249.9180\n",
      "Epoch: 038/050 | Batch 450/469 | Cost: 14097.8291\n",
      "Time elapsed: 5.56 min\n",
      "Epoch: 039/050 | Batch 000/469 | Cost: 14015.1768\n",
      "Epoch: 039/050 | Batch 050/469 | Cost: 13973.9795\n",
      "Epoch: 039/050 | Batch 100/469 | Cost: 13633.8730\n",
      "Epoch: 039/050 | Batch 150/469 | Cost: 14055.6895\n",
      "Epoch: 039/050 | Batch 200/469 | Cost: 13871.2949\n",
      "Epoch: 039/050 | Batch 250/469 | Cost: 13746.9258\n",
      "Epoch: 039/050 | Batch 300/469 | Cost: 13203.3242\n",
      "Epoch: 039/050 | Batch 350/469 | Cost: 13911.6846\n",
      "Epoch: 039/050 | Batch 400/469 | Cost: 14241.5703\n",
      "Epoch: 039/050 | Batch 450/469 | Cost: 13677.2559\n",
      "Time elapsed: 5.70 min\n",
      "Epoch: 040/050 | Batch 000/469 | Cost: 14490.0547\n",
      "Epoch: 040/050 | Batch 050/469 | Cost: 13689.6680\n",
      "Epoch: 040/050 | Batch 100/469 | Cost: 14046.6895\n",
      "Epoch: 040/050 | Batch 150/469 | Cost: 13632.8125\n",
      "Epoch: 040/050 | Batch 200/469 | Cost: 13456.0918\n",
      "Epoch: 040/050 | Batch 250/469 | Cost: 13832.4795\n",
      "Epoch: 040/050 | Batch 300/469 | Cost: 13813.2939\n",
      "Epoch: 040/050 | Batch 350/469 | Cost: 13484.2520\n",
      "Epoch: 040/050 | Batch 400/469 | Cost: 13600.7803\n",
      "Epoch: 040/050 | Batch 450/469 | Cost: 13492.7578\n",
      "Time elapsed: 5.85 min\n",
      "Epoch: 041/050 | Batch 000/469 | Cost: 13993.5547\n",
      "Epoch: 041/050 | Batch 050/469 | Cost: 13833.7031\n",
      "Epoch: 041/050 | Batch 100/469 | Cost: 13798.5264\n",
      "Epoch: 041/050 | Batch 150/469 | Cost: 14379.4717\n",
      "Epoch: 041/050 | Batch 200/469 | Cost: 13919.1445\n",
      "Epoch: 041/050 | Batch 250/469 | Cost: 13361.4160\n",
      "Epoch: 041/050 | Batch 300/469 | Cost: 14154.9043\n",
      "Epoch: 041/050 | Batch 350/469 | Cost: 13858.2715\n",
      "Epoch: 041/050 | Batch 400/469 | Cost: 14078.7451\n",
      "Epoch: 041/050 | Batch 450/469 | Cost: 13970.0488\n",
      "Time elapsed: 6.00 min\n",
      "Epoch: 042/050 | Batch 000/469 | Cost: 14093.0371\n",
      "Epoch: 042/050 | Batch 050/469 | Cost: 14073.4688\n",
      "Epoch: 042/050 | Batch 100/469 | Cost: 13645.2754\n",
      "Epoch: 042/050 | Batch 150/469 | Cost: 13464.0029\n",
      "Epoch: 042/050 | Batch 200/469 | Cost: 13615.8643\n",
      "Epoch: 042/050 | Batch 250/469 | Cost: 13301.9805\n",
      "Epoch: 042/050 | Batch 300/469 | Cost: 13605.0020\n",
      "Epoch: 042/050 | Batch 350/469 | Cost: 14035.0498\n",
      "Epoch: 042/050 | Batch 400/469 | Cost: 13637.4297\n",
      "Epoch: 042/050 | Batch 450/469 | Cost: 14165.7686\n",
      "Time elapsed: 6.15 min\n",
      "Epoch: 043/050 | Batch 000/469 | Cost: 13715.1055\n",
      "Epoch: 043/050 | Batch 050/469 | Cost: 14122.5898\n",
      "Epoch: 043/050 | Batch 100/469 | Cost: 14184.3633\n",
      "Epoch: 043/050 | Batch 150/469 | Cost: 13745.1133\n",
      "Epoch: 043/050 | Batch 200/469 | Cost: 13448.2559\n",
      "Epoch: 043/050 | Batch 250/469 | Cost: 13323.3438\n",
      "Epoch: 043/050 | Batch 300/469 | Cost: 13835.5723\n",
      "Epoch: 043/050 | Batch 350/469 | Cost: 13462.5098\n",
      "Epoch: 043/050 | Batch 400/469 | Cost: 14195.2227\n",
      "Epoch: 043/050 | Batch 450/469 | Cost: 13253.4600\n",
      "Time elapsed: 6.30 min\n",
      "Epoch: 044/050 | Batch 000/469 | Cost: 14028.9277\n",
      "Epoch: 044/050 | Batch 050/469 | Cost: 13369.4111\n",
      "Epoch: 044/050 | Batch 100/469 | Cost: 13645.9971\n",
      "Epoch: 044/050 | Batch 150/469 | Cost: 13864.8613\n",
      "Epoch: 044/050 | Batch 200/469 | Cost: 13508.7471\n",
      "Epoch: 044/050 | Batch 250/469 | Cost: 14534.7754\n",
      "Epoch: 044/050 | Batch 300/469 | Cost: 13565.7900\n",
      "Epoch: 044/050 | Batch 350/469 | Cost: 13719.3438\n",
      "Epoch: 044/050 | Batch 400/469 | Cost: 13678.1367\n",
      "Epoch: 044/050 | Batch 450/469 | Cost: 14057.3779\n",
      "Time elapsed: 6.44 min\n",
      "Epoch: 045/050 | Batch 000/469 | Cost: 13414.4121\n",
      "Epoch: 045/050 | Batch 050/469 | Cost: 13531.8555\n",
      "Epoch: 045/050 | Batch 100/469 | Cost: 13470.2266\n",
      "Epoch: 045/050 | Batch 150/469 | Cost: 13866.7627\n",
      "Epoch: 045/050 | Batch 200/469 | Cost: 13438.2832\n",
      "Epoch: 045/050 | Batch 250/469 | Cost: 14194.3691\n",
      "Epoch: 045/050 | Batch 300/469 | Cost: 14172.3320\n",
      "Epoch: 045/050 | Batch 350/469 | Cost: 13798.1680\n",
      "Epoch: 045/050 | Batch 400/469 | Cost: 13684.1064\n",
      "Epoch: 045/050 | Batch 450/469 | Cost: 13255.7441\n",
      "Time elapsed: 6.59 min\n",
      "Epoch: 046/050 | Batch 000/469 | Cost: 13833.5371\n",
      "Epoch: 046/050 | Batch 050/469 | Cost: 13982.0898\n",
      "Epoch: 046/050 | Batch 100/469 | Cost: 13699.0674\n",
      "Epoch: 046/050 | Batch 150/469 | Cost: 13579.7803\n",
      "Epoch: 046/050 | Batch 200/469 | Cost: 13611.3682\n",
      "Epoch: 046/050 | Batch 250/469 | Cost: 14532.4092\n",
      "Epoch: 046/050 | Batch 300/469 | Cost: 13690.0381\n",
      "Epoch: 046/050 | Batch 350/469 | Cost: 13886.2227\n",
      "Epoch: 046/050 | Batch 400/469 | Cost: 13716.4883\n",
      "Epoch: 046/050 | Batch 450/469 | Cost: 13887.5723\n",
      "Time elapsed: 6.74 min\n",
      "Epoch: 047/050 | Batch 000/469 | Cost: 13460.0312\n",
      "Epoch: 047/050 | Batch 050/469 | Cost: 13862.8320\n",
      "Epoch: 047/050 | Batch 100/469 | Cost: 13045.7754\n",
      "Epoch: 047/050 | Batch 150/469 | Cost: 13520.7910\n",
      "Epoch: 047/050 | Batch 200/469 | Cost: 13966.8848\n",
      "Epoch: 047/050 | Batch 250/469 | Cost: 14337.5615\n",
      "Epoch: 047/050 | Batch 300/469 | Cost: 13835.9805\n",
      "Epoch: 047/050 | Batch 350/469 | Cost: 13705.6699\n",
      "Epoch: 047/050 | Batch 400/469 | Cost: 14085.0215\n",
      "Epoch: 047/050 | Batch 450/469 | Cost: 13708.9961\n",
      "Time elapsed: 6.89 min\n",
      "Epoch: 048/050 | Batch 000/469 | Cost: 13683.8477\n",
      "Epoch: 048/050 | Batch 050/469 | Cost: 14290.2441\n",
      "Epoch: 048/050 | Batch 100/469 | Cost: 13824.9033\n",
      "Epoch: 048/050 | Batch 150/469 | Cost: 13902.4424\n",
      "Epoch: 048/050 | Batch 200/469 | Cost: 13742.8066\n",
      "Epoch: 048/050 | Batch 250/469 | Cost: 13804.6270\n",
      "Epoch: 048/050 | Batch 300/469 | Cost: 14011.4414\n",
      "Epoch: 048/050 | Batch 350/469 | Cost: 13902.3428\n",
      "Epoch: 048/050 | Batch 400/469 | Cost: 13671.2607\n",
      "Epoch: 048/050 | Batch 450/469 | Cost: 13533.4326\n",
      "Time elapsed: 7.03 min\n",
      "Epoch: 049/050 | Batch 000/469 | Cost: 13808.8584\n",
      "Epoch: 049/050 | Batch 050/469 | Cost: 14385.1328\n",
      "Epoch: 049/050 | Batch 100/469 | Cost: 13595.7334\n",
      "Epoch: 049/050 | Batch 150/469 | Cost: 13449.9658\n",
      "Epoch: 049/050 | Batch 200/469 | Cost: 13782.0635\n",
      "Epoch: 049/050 | Batch 250/469 | Cost: 13681.0293\n",
      "Epoch: 049/050 | Batch 300/469 | Cost: 14259.2988\n",
      "Epoch: 049/050 | Batch 350/469 | Cost: 13350.5176\n",
      "Epoch: 049/050 | Batch 400/469 | Cost: 12788.5156\n",
      "Epoch: 049/050 | Batch 450/469 | Cost: 13642.1787\n",
      "Time elapsed: 7.18 min\n",
      "Epoch: 050/050 | Batch 000/469 | Cost: 13596.1172\n",
      "Epoch: 050/050 | Batch 050/469 | Cost: 13988.5371\n",
      "Epoch: 050/050 | Batch 100/469 | Cost: 14061.5742\n",
      "Epoch: 050/050 | Batch 150/469 | Cost: 13996.9111\n",
      "Epoch: 050/050 | Batch 200/469 | Cost: 13628.2070\n",
      "Epoch: 050/050 | Batch 250/469 | Cost: 13667.3203\n",
      "Epoch: 050/050 | Batch 300/469 | Cost: 13978.5820\n",
      "Epoch: 050/050 | Batch 350/469 | Cost: 13589.2910\n",
      "Epoch: 050/050 | Batch 400/469 | Cost: 13307.0566\n",
      "Epoch: 050/050 | Batch 450/469 | Cost: 13997.9141\n",
      "Time elapsed: 7.33 min\n",
      "Total Training Time: 7.33 min\n"
     ]
    }
   ],
   "source": [
    "start_time = time.time()\n",
    "\n",
    "for epoch in range(num_epochs):\n",
    "    for batch_idx, (features, targets) in enumerate(train_loader):\n",
    "        \n",
    "        features = features.to(device)\n",
    "        targets = targets.to(device)\n",
    "\n",
    "        ### FORWARD AND BACK PROP\n",
    "        z_mean, z_log_var, encoded, decoded = model(features, targets)\n",
    "\n",
    "        # cost = reconstruction loss + Kullback-Leibler divergence\n",
    "        kl_divergence = (0.5 * (z_mean**2 + \n",
    "                                torch.exp(z_log_var) - z_log_var - 1)).sum()\n",
    "        \n",
    "        \n",
    "        ### Add condition\n",
    "        # Disabled for reconstruction loss as it gives poor results\n",
    "        \"\"\"\n",
    "        onehot_targets = to_onehot(targets, num_classes, device)\n",
    "        onehot_targets = onehot_targets.view(-1, num_classes, 1, 1)\n",
    "        \n",
    "        ones = torch.ones(features.size()[0], \n",
    "                          num_classes,\n",
    "                          features.size()[2], \n",
    "                          features.size()[3], \n",
    "                          dtype=features.dtype).to(device)\n",
    "        ones = ones * onehot_targets\n",
    "        x_con = torch.cat((features, ones), dim=1)\n",
    "        \"\"\"\n",
    "        \n",
    "        ### Compute loss\n",
    "        #pixelwise_bce = F.binary_cross_entropy(decoded, x_con, reduction='sum')\n",
    "        pixelwise_bce = F.binary_cross_entropy(decoded, features, reduction='sum')\n",
    "        cost = kl_divergence + pixelwise_bce\n",
    "        \n",
    "        ### UPDATE MODEL PARAMETERS\n",
    "        optimizer.zero_grad()\n",
    "        cost.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "        ### LOGGING\n",
    "        if not batch_idx % 50:\n",
    "            print ('Epoch: %03d/%03d | Batch %03d/%03d | Cost: %.4f' \n",
    "                   %(epoch+1, num_epochs, batch_idx, \n",
    "                     len(train_loader), cost))\n",
    "            \n",
    "    print('Time elapsed: %.2f min' % ((time.time() - start_time)/60))\n",
    "    \n",
    "print('Total Training Time: %.2f min' % ((time.time() - start_time)/60))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Evaluation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Reconstruction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABIAAAACqCAYAAADV0DQZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsnWeAHMXVtZ82xgabYBthGUQQWYgMshA5GUSWTRRR5GRyDh/ZgMjRBAEyIiNyBpNzksBGiCByTgJMEvAa098P6XTVzM7u9uxO3vP82dmempmeO1XV1XXPvTdJ0xRjjDHGGGOMMcYY07r8rN4nYIwxxhhjjDHGGGOqizeAjDHGGGOMMcYYY1ocbwAZY4wxxhhjjDHGtDjeADLGGGOMMcYYY4xpcbwBZIwxxhhjjDHGGNPieAPIGGOMMcYYY4wxpsXxBpAxxhhjjDHGGGNMi9OtDaAkSdZMkuSVJEleS5Lk4EqdlDHGGGOMMcYYY4ypHEmapl17YZJMBUwAVgfeA54BNkvT9MXKnZ4xxhhjjDHGGGOM6S4/78ZrBwKvpWn6BkCSJFcDQ4B2N4B69eqV9u3btxsf2ZyMHTt2YpqmM5fzGtsqP7ZVefREe7311ltMnDgxKfd1PdFW4HFYDrZVfmyr/Hh+z4/n9/LwOMyPbZUfz1n58ZxVHh6H+clrq+5sAPUB3o3+fw9YurhRkiQ7ATsBzDHHHIwZM6YbH9mcJEnyds52tpVtlZu8tprStkfba8CAAbnb9nRbgcdhOdhW+bGt8uP5PT+e38vD4zA/tlV+PGflx3NWeXgc5ievraqeBDpN0xFpmg5I03TAzDOXvTHco7Ct8mNblYftlR/bKj+2VX5sq/zYVuVhe+XHtsqPbZUf26o8bK/82Fb5sa3y050NoPeB2aP/Z5tyzBhjjDHGGGOMMcY0EN3ZAHoGmC9JkrmSJPkFMBS4pTKnZYwxxhhjjDHGGGMqRZdzAKVp+mOSJLsDdwNTASPTNB1fsTMzxhhjjDHGGGOMMRWhO0mgSdP0DuCOCp2LMcYYY4wxxhhjjKkC3doAMsYYY5qBu+++G4DrrrsOgHnmmQeAAw88MGvzs59VvS6CMcYYY4wxdcOrXWOMMcYYY4wxxpgWxwogw4MPPgjACSecAMA///nPguf32Wef7LHK6m222WYA9O3bt/onaIwxZfDDDz9kj0eMGAHA//t//w+A//u//wPg+++/B+Dpp5/O2t5www21OsWGIUmSko9jVlxxRQBuvvnm7NiMM85Y3RMzxhhjTNMxduxYAP70pz8B8OWXX2bPjR49GoCNNtqo9idmMqwAMsYYY4wxxhhjjGlxWkoB9M0332SPr7rqKgCOOeYYAN57773c7zPnnHMCMHToUAB22mmn7DkpXpo9V0Ss8hkyZAgQPOLFXuAzzjijzeuPO+44APbee28A/va3v1XlPI0xJi+vvfYaELxOAG+//TYQ5rWLL74YgFNPPRWABx54oM3r55133uqfbI359NNPAbjzzjuBMIevs846WZuJEycC8MwzzxS89uGHHwZgiy22yI794x//AIIq1BhjTG3Rvc1FF10EhDlc7LLLLtnjhRdeuHYnZno0WoN99dVXQOF95bHHHgs0nwJovfXWA+C2227rtO22224LwMiRI6t6Tt2huXcxjDHGGGOMMcYYY0ynNI0C6J133skeP/nkkwDce++9BW0eeuih7PGrr75a8Fx7uQ06+qyTTjqp4C8ED/Hcc8+d+/0aAcVfXnrppQAcdthh2XNxvoy8TJo0CYCTTz4ZgMUXXxxovh1dYyqNPHLxvFEOhxxySO62v/zlLwH43e9+16XPahU036+55ppAUP3EyFazzjorALvvvjsAu+66a9bm/vvvB5pfASS1D8CwYcMA+OyzzwAYM2ZMQVtVQ4OgCvrxxx8BOP/884GQ+0fqIYBnn30WgMGDB1f03E1j8r///Q+Agw8+ODsmFd1iiy0GwH333Qd0bT565ZVXsseaA998881uv2890ZgDGD9+PBByLmqu+fzzzwFYZpllsrZS1U0zzTQA/OY3vwHg3XffBeCmm27K2mqsjho1CoDll1++sl/CNBwffPBB9njPPfcECvtETKz2Vx+ceuqpq3h2zYHsdeuttwJw4403AoW22XDDDQHYeuutAVhiiSWAsJbo6Xz99dfZ40cffRQI6h7dc+ree4YZZsjaxnllm4GjjjoKCMqfn/988tZJqeuRImmuvvpqAA4//HAA5pprrmqfZtlYAWSMMcYYY4wxxhjT4jS8Aui5554DYNVVV82OxdnEu8pss82WPZZH+PXXXwcKvTbFXHjhhUComNXoKBeSKuDIo1Yp/vvf/wLBc9zMCqAPP/wQCJ40fafp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\n",
      "text/plain": [
       "<Figure size 1440x180 with 30 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "##########################\n",
    "### VISUALIZATION\n",
    "##########################\n",
    "\n",
    "n_images = 15\n",
    "image_width = 28\n",
    "\n",
    "fig, axes = plt.subplots(nrows=2, ncols=n_images, \n",
    "                         sharex=True, sharey=True, figsize=(20, 2.5))\n",
    "orig_images = features[:n_images]\n",
    "decoded_images = decoded[:n_images, 0]\n",
    "\n",
    "for i in range(n_images):\n",
    "    for ax, img in zip(axes, [orig_images, decoded_images]):\n",
    "        cpu_img = img[i].detach().to(torch.device('cpu'))\n",
    "        ax[i].imshow(cpu_img.view((image_width, image_width)), cmap='binary')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### New random-conditional images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 0\n"
     ]
    },
    {
     "data": {
      "image/png": "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tq1yNhtsXVVSnkrbtm2trIeSle+8804b48oV0Oeni5KSEivqqGR5taljx44MGTIESKgwpaWl9r2UkWS7q1dFzwZKSkqYOnUqkNjoIpo3b24FD3VvrVq1yu43XZM//elPQJwsKxtl9/777285Kw2V7CsFqaSkxJQMKTMhBFNdpLJJxejdu7eppGpbXl6e3Yv6XJVImD59unn7mmM0r2aS+fPn23yj+1PzaVFRkRUE1rzarl27GsVl9ft5eXlmm+7hjRs32vVMF4qu6Ho3a9bM5kupT+q7fv362c+Sx1j1QsB6f1FRkeUeS41dtmyZbUZIF5orlHv6wQcf2Hx55ZVXAoln+7Bhw2oU+y0pKanSb5DYSDB06FDbBKJcSFemHMdxHMdxsoSsVKbkBWgXxsSJE221qeKVRx11FBAX5dxaboy8QK285UV26tTJSihUfy0TaOv8008/bXkJ8iSktBx77LHmUUhtadWqlV0TXS/lpnz++eeWT6X3bd68OW1KTTLKp7n33nttR6LaqT465phjLOatInLdu3e3/tHvyRPs1auX2aKdYWVlZTW2rDc0uu46muKyyy4zj//UU08FErH8goIC66/atC8nJ8e8Zn1G586dbSekFLl0K1NTp07lZz/7WZWfyVMcN26cKadSMDp27Gj9qPxFcc0119jvqW8rKyszrhI/9dRTNs8ItenQQw+1fpQ6s2nTJmu/+ie5/IOQYjpy5Ejr24ZSptTGk046yZRgtSknJ8fsUY6NjvUJIdRQ0po3b25evuZalb7o3bu35QkqD6Vfv34ZO8MueQefdnCrb2RDq1at7Pd0v+bm5tYYd5q7Fi5caHmCuu+effZZTjrppIY0pQZSplQ4dN26dabo6qtKrey66661GlsaJ7vvvrupj1JVBw4cyPe///16tGD7SNnXTrzNmzebiij19LDDDgPi8gbVcw5btGhh95nmHZ0TumnTJiuroL/TrVs3Ww+kSlYuprQ9XIdQAhxwwAFAIlynC7a9iVevaxIoKSmxBYZu+EyGGBQyue2222xhpQEiyXPJkiWWdJecKF/ddkmWyQmRSpwcMGCAhRbSgdquAzgvueQSS9hUX+j6H3PMMRx88MFAon+31q/JiystyHTNunTpYnVS0nXO4rx584DEluuysjLbQq226CHVrl27HV4kaJGiheOBBx5okrWS07V4aehk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\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 2\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAABSCAYAAABwglFkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJztnXuU1WX1/1+fuTIDA6PMIFcjQIkRofAKeSkUIbRMrcQyWi7LNFtLy0rz1yrLXGVZWtnykop9sVQMMg0xvKWoqEgoIAgCCgwMIhdxZhiHmTOf3x+H9/4cZhCGOTNzPnPYr7VYZzhzZubZn+e6389+9hOEYYjjOI7jOI7TNnIyXQDHcRzHcZyujC+mHMdxHMdx0sAXU47jOI7jOGngiynHcRzHcZw08MWU4ziO4zhOGvhiynEcx3EcJw18MeU4juM4jpMGaS2mgiCYFATBiiAIVgVBcE17FcpxHMdxHKerELQ1aWcQBLnASmACUAksAC4Iw3BZ+xXPcRzHcRwn3qSjTB0PrArDcE0YhruAB4Cz26dYjuM4juM4XYO8NH52ALA+5f+VwAnNPxQEwSXAJQDdu3c/5hOf+EQafzJzvPPOO2zZsiXY2/ey3cZssQ9g4cKFW8IwLG/+frbYeDC3U8h+G7PFPvC+iNvYJdiXjXsQhmGb/gFfAu5K+f/XgVv39TPHHHNM2FXZXfb9Ppdst7Er2xeGYQi8Gmaxjd5OO9bGpqamsL6+Pqyvrw/r6urCurq6dv8bYeh9McwCG70vHlw2pqNMbQAGpfx/4O73HMdxsopwd2zpu+++y6uvvgrAoEHJ4e+II46guLg4Y2VznNYQhiFNTU0A5ObmZrg02Uc6MVMLgCOCIPh4EAQFwBTgkfYpluM4juM4TtegzcpUGIaNQRB8F/gPkAvcE4bhG+1WsoMEebyJRIL6+noAdu3aBUB1dTUAxcXF5OUlq6pXr14ABMH+t3DjSl1dHQBFRUUZLonj7JtEIgHAsmXJQ8rTpk0zr1598bjjjuPUU08FoFu3bhkoZeuQKrF+/XoWLlwIRDaUlpYC0LNnT/r06bPH95yuzebNmwF4+OGHKSwsBODII48E4IQTkmHOOTmecjJd0tnmIwzDx4DH2qksjuM4juM4XY60FlNxQ57Xjh072LAhGb6luIaePXsC8VB0EokElZWVAKxduxaA1atXs2DBAgD++9//AkkPEiA/P59Pf/rTAJx11lkA9O7dm8997nMAdO/evdPKng4bN24E4I03kgKmvCLVzcGIVLrnn38egFWrVgFQXl7OmDFjADj88MMBTJ3sCqSqq8uXLwei9vzBBx8AMHr0aI4++mgAizmKQ/+ESDF++umnAXj00UcBWLlyJStWrACgX79+AFRWVjJgwAAARo4c2dlFbTVbt24F4N5772XmzJkAZovs7dOnDxdffDEAP/7xj4F4q21tZceOHQAsWbIEgNraWtsJkCJXUlICQEVFhX0dl/bZGtTPbr31VgBuueUWs3HEiBEAXHbZZQBcfvnlsVenpBKrHa9Zs8bGRM2BiUSCgoICIDmGQjRu9ujRo0PrL95Pz3Ecx3EcJ+Z0HVf3I2hqauLNN98E4LXXXgOSKo88XXmPxx57LADDhg3L2Apc3t/ChQt57LHk7ujvfvc7ABobG23l3djYuMfngyBg9uzZAPz73/8Gkh7k7bffDsBJJ50ERCvxOLJ161bz8lVfUg1zc3MtfkqeQ1fyAA+UhoYGIFmXixYtAuCee+4BIm+yuLiYyy+/HMAUyGOOOSbWz2XHjh2mqq5btw6A9957jxkzZtj3AYsN7N+/P9/97ncBmDx5MhCpcJlm8eLFAPzjH/8AIgWxoaGBM844Y4/PduvWjbfffhuIPP44npZSvEzv3r3ZsmULEI0xapMbNmzgoYceAuCcc84B4JOf/GRnF7VD0Lj65JNPmhK8dOlSAF5++WX7XI8ePQAoKysD4Nxzz+WYY44BYNy4cUD81bqmpiarR6lv1dXVNvdJkZRStXPnTrM7ToRhaH1xzpw5APzrX/8Ckvmfdu7cCURjCiR3ciCqo1NOOQWA8847j4kTJwJw6KGHAu07z3S5xZS28rRlNGvWLJuANCEVFBTYw9XrN7/5TQAmTJjAySef3KllFpIn58yZw5/+9CcAawx7G3zV8AsKCmzbRIPf5s2b+cpXvgLAr371KwAuvPBCAPr27dtRJhwwsu/hhx/eYwsLksfMISmxq8yyefv27fazWhDrNe5y9EehCVeLiwceeMCeiWxSPTc2NnLzzTcDMHz4cACOPvpomxDjQG1tLRANbitWrLDF/urVq4HkYPXhhx8C0WQmVqxYwY033ggkJ3hItl3J9JmitrbWtvXk9Gixd8EFF9iko+2D7du3m41alMRxMaWtqvPPP9/a27Rp04BowgWoqqoCohCE0aNHx3oR31q0MF66dKk5sepvBQUFLbbRtYCeNm2aOQLipJNOyng73Re1tbVWj0rlkboAlOOuMVbPIS5o3n7kkUe46667AHjiiSeAaA4sKCiw9YAoLi4229Qn5cQvWrTI6lFrgBEjRrRbX+2as5LjOI7jOE5M6BLKVBiGJktrG0Ey5X333cf7778PRKvt8vJy2zaS95C6Oj/++OMBOt3L12o7DEM7fqzy5efnWyD2YYcdBkTHV/v06cPcuXMBeP3114Hkqlue/k9+8hMgUgquuuqqjEu28h7kHa1evdo8gIqKCiA6jt2rVy8LIJR6V1lZaV/Pnz8fiCTZYcOG2VZL3FUqtcm7776bTZs2AXDbbbcByTrUFQuDBw8GsHZeVVVlyoAC9idOnJhxZSoMQ+t7UqFkz8aNG81T1Othhx3W4oCBlOS6ujreeecdIFJGPvvZz9r2SqZYuXKlKd8K0NX23ahRoyzYXH03kUhYX5QyJQoKCmLTRtV/ysrKOPfcc4FIrdq+fTuQrN9t27YBkZK6du1aa59dEY27OvQza9Ysa5Maky6++GJ7Ps0VqmeffdbUZFFRURGrHYDmbNq0yexWQH0ikWgRSqIxOC5tVP1HBySuvvpqqzehMbCsrIxLL70UiMqfl5dn9affpbnohhtu4KqrrgLghz/8IQBTp05lyJAhQPpbfvF4go7jOI7jOF2UWCtT2s9duHAh//znP4GkEgWR95Cfn2+rU+0J6+cAXnnlFSDysk488URTcDrbyz/kkEOApLd+/vnn7/G9IAis/OPHjweS11QI2ahke7///e8tiFL73X/729+AZKBdpo9op8Z2iaFDhwLR8XF5h0VFReYh6uDAIYccYnE38+bNA6K6P+mkkyx+atSoUUD8AtZlv+po2bJlFvR45ZVXAkkb5d1qL19q1OzZsy29hzzLurq6jCVSlD1vvvkm999/PwC//vWvgcgDDILAFFepj+PHjzeVVArbk08+CURKKkQJXKurqzOmTElNW7NmjSmGCv6XMqPg1lRycnLsfT0LqarV1dXW7uPi/QdBYO3uvPPOA6Ix5IMPPrBYxgceeACAt956q0srU0Lj71FHHWWKjHYBSkpKrJ40FukQxejRoy29h+pwy5YtsVam6uvrrc8OHDgQSCrHaqdq6/pMXNKuaMzTGLN582bbtVBssJThAQMGMGzYMCBKjVBfX28pWLSLpXEmPz/f1gbTp08HkjHUUqbSJR5PsBk6YaBthNdff91OPWlw+9jHPgYkF0caiLU4Sg0WVH6mO+64A8C2WjKByvmlL31pjwBdfU8TkTp46gJBk2jqaZJvfetbALZVogXj888/b5NBpjqJOqsaco8ePSyQWnaqbKmTjLZOevbsaaf9tC2rwf2FF15g5cqVQLSYihsKXtXJxYqKihbbmz179rQ2oWDJF198EYBJkybZoKDPaDGWCd577z0gOcj9+c9/3qNcn/rUpwC44oorrG7lGKxevdq2kmS32v7GjRutvvWqgTKTFBUVcfbZZwPRONNaNFmpbT/33HP2tRYkcVr4y3nRa0lJiY01CtJdv369bRllepu5Lahtff7znwf2tCF1UaVFfPMTxdqWhmih9fGPf7yDS902tDjauXOnjav9+/cHknOlFoVC2357cxIygbYflYNw06ZNfP/73weSIQAQbU0XFRW1cFAKCwtt8ajvycbq6mp7Pl//+teB5PZ9e/XHeLhKjuM4juM4XZTYKVNhGNoRViktxcXFti0mJUJbRYWFheYt6HXXrl2miGibadKkSUBSRsxUxnCtgMvLy+0oeGvzKun72jJ5++23TbmRHK1V/axZs5gyZQoQeV6djcorr6h///6muMkL2pfNeXl59ozkNcv2mpoak+Tj5OWnItXmG9/4BpD0kqRQqMxhGJqn1Hybb+bMmfbsPvOZzwBk5Ci2tn+kmM2fP98yYyt7+VFHHQUkt1Ga5ws78cQTqampAeDxxx8HIik/DEPL//bFL34RyIyNQmUeN26ceb9tRd6wtjYBvvzlLwPxzvifm5tr/Uz9btGiRbZtqTbZlVC9SjW94IILbDs2NeWMPqe5Q8rwtGnTLFfR1772NSC+t05oR6Cqqsq+1gGtdevW2Ryh8qvvxmWbT/OVxoWxY8danrPW5IYKgqCF3b/4xS+A5PwopVnrCc0x7YErU47jOI7jOGkQj+VoCk1NTRZbIi+3pqbG7qRTwsd9JdpKPR6pvX7tn1ZUVMQi2dqBBqNKwdAR5tSvFQMgW4uLi1skSOxsZJ/qq6KiwuJhWqsmybuXsiFP8YYbbrDAw7giG/eVKTkIAvOMdfxXAZIrV67kRz/6EZDZzPby4BVHc+mll3LiiScCUWyf+uLe6jUvL69F/JwU54aGBk4//XQgSsgaB3r06NHmRH7NU4I89dRTNt4ozk9ed1zROKLY1enTp9v42xWVqebk5uba+CSVvLGx0eICFYOqXY2qqio7DKR4nLiisTKRSFi/0w7Ghg0brA9KpdtX380EUooUrxeGoalorSljfX29HdL67W9/a+9Bsl9fdNFFQHQYqj1xZcpxHMdxHCcNYqdM5ebmmuogJaNbt262Ot2XxyivsLq62u7pk7chVeOrX/1qbFbhrSUMQ1Ohnn32WSDpZSjORuqB1LiTTz65RfLAzkbPWIrGqFGjDlgRVALLX/7yl0AUMzV58uRYx520ljAM7XTpww8/DCRVN6Eju+25r3+gqB0pVjEnJ6fFdSr7IpFIWNzQz3/+cyCK7SsoKLB4MMXnZBK12XSul5DSqNi3iRMn2nU7UjUGDBjQQhmIE1JkFO+3c+dOO5WqO+rikuahrWiuSE0J8dZbbwHJE5gQnQC/+uqr7XRnXO/kk4q/bNkye1UdKf5v6NChNqcqblGniONyN5/64IHGpOn09H/+8x8uueQSIIqZ0u+66aabTGHtiFOpsVtMQRRopge0a9cuG3Sa38WTSCTs6KoGsNdee80WH8rzo4Az5RqJM+rokmzXrFljGdy1KHz88cctU7E6jV5LS0tjY6cWUE1NTQe0iK2pqbGAZQ3uyqOlwOeugOoSorarrby1a9faIur6668HooXGjTfeaEHZmVr8JxIJWzCl3oeldpZ6EbdoPkm98cYb5gDIsRHXXXedXdIdJxoaGlp1SEKEYWj2ykblakokEha8rEt1y8vLbVGiLZi4pBxobGzkmWeeAfa8sUHPQYvruJS3LaRmeVeajsWLF9tBHuWz00Kjd+/esU3BItS2lMNt+/btttWsEIIjjzzS7NWcqdsMDj/8cMaMGQPEa6GcOn6mHtyBZFuVjcop9bOf/cz6oPrwNddcA8Dpp5/eoalX4vPUHMdxHMdxuiCxVKa0ApX3U1NTs0fiNIgkvLVr15q0+dJLLwFJmVYevlQMybOZyiC9P5qammzbTl6GpPVt27bZVoG8Jx1VTkVH1svKymIRZJ9KTk7OHl5Gc/Q9qZEzZszg5ZdfBuDCCy8EMBUjjlsjorn6JA+4vr7e6mzVqlX2qtvrFWT+gx/8AEgeo89UWgvZUFdXZ3fUSaUoKysz25pvC9TX19vWrLZMXn31Vbu9QP1amYzHjBkTm2SBENldWVm5RyZ+iNpnGIYtttDr6uqsnvW51GSQzdvEW2+9ZUl19bv0HDKtCmzdutUOCKh+S0pKrF92ZVJvZZD6pva6YcMGHnvsMSCaK3Tn6WmnnZbxevkopIBKmVHm8JqaGguFUFtctmyZhRVo60+Kaupdfjr4FQeamppMIVTwvJS2ZcuWsWbNGiBSE9etW2d9SfOFDrl0dKLVeLYQx3Ecx3GcLkIslSkhT3bz5s2216u4qL/+9a9AcmUtRUer9NzcXPNCFJgn7zBOnjBE5Xvuued44YUXAPjNb34DRCpNatyGPp+aBLK5V9vQ0GD2xtGjkqchr6ixsdEUkLlz5wJJj1EeiAIK002k2NG8//77dvBBx+BlF0Seseo3kUjYUXMF+yqxo2JpMoG818WLF1tMguqsoaHBYhp1N5k+s2vXLlNfFLfw4IMPmmojj1evAwcOjNVhEJX9jjvuMGVXgeKpR87VBxVQPnToUKtHKeip17Mo2Ffvbdy40ZR19fFMqwFqm0uWLLHrgsRll11muwSyvSuhZ6w5ZO7cuaYIql6feeYZGytlq+qkve5ua2/ee+897r33XiCKuVR/Ki0ttbrSLk0ikbA+K9VR/XT16tV29ZqUuUz2zdRkxlL0daWcDrQsWbKE+fPnA9FOVX5+vqVZ0aEBqcAdPRfGejEl4+vr61myZAkA99xzDxBNxA0NDdZYtP0ThqE1mjPOOAOIBr44Dd4QTbbPP/88N954I7DnRc2w9zKnNgwtprTNWVhYaAuRww8/vMXnM4UmZC00VKfr1q3b41QNJLf5lNtFd2bFbSEsJI/ff//9PPjgg0BUr6mTsAZ1DRTdu3e3haLuDcvk3XSyY86cOUCyXrTlo3vlcnNzra60YFf91NTUWFvVgnHLli22iLj88suBaFHx/vvvx+rON7XPd955hxkzZgDRxKLvlZaW2l2EuiezV69etvhqnll769at1vc0mQ8ePNgOVeh3Zbp/qt9deeWVVq9XXXUVkAzA1ja0HFf1xbj2yTAMzbnWIaTFixfb95ofnkjdvlUfHDFiBBC/sAI5L3fffTd/+MMfgKgedHftkUceaZ9PPXWrEBLVtw40lZaW2oIkU+EFe2Pbtm28/vrrQBT2IkFl27ZttmBMXQBq3tAiqrNOCmd+hnUcx3Ecx+nCxFqZEql3CslD1JbP+vXrbVWuVWpRURHHH388EHl82jaJizIlz1Uy5fTp01tsg8gjqq+vb5HlPAgCCzCUZCtvt76+3lIpyN5+/fod0HHvjkDbPU899RQQSczz5s2zMklRq6+vt/JK5pXHHBdPUeV5+umnAbj33nstJYcCl6WI5ufnW7lTc57Jg5Tyk0mFQuWSjD537ly7qV2eX0FBAcOHDweioHk9h6amJlNVU3OfqZ2qjqVuVFZW2vaYttMKCwsz9gx0kGX58uVWBtWflO4BAwbYIRapURs3brTnI+9egbGbNm2yjNqpv2P06NEALe4yzBQ6Il9fX88VV1wBRHcIlpSUWF1LFZHiOnDgwIxvUaai+WHBggWWkkPvSaEpKCiwulNb3LRpk7VdKVJxC5XQeKlt2Lvuusva1AUXXABE7enQQw+1OVN27dixw+YR9U+NV3V1daZW6XuZPMSkMi9dupTly5cD0fyu+/VycnJsHSC1qqmpybKnH0jm9PYgHq3EcRzHcRyni7JfZSoIgkHA/wGHASFwZxiGfwiC4FDgQWAw8A7wlTAMt3/U70mH0tJSW6k2vzeqrq7OYlG0kp48eTKnnXYaACNHjgTidfcXRB6BvNbUO/eaH8fu27eveRw6ytu9e3d7FkLP5Oabb2bixIlAtM+ck5NjN57L286UwiNPTzFelZWVplrJhiAIzAtuHgQdlxvbVS7Z8e6775pKqNvY93YfoVSY/Px8y/afSZvUzhTnpVQGiUTCvFvFHQwcONDKKjVG3n11dbW1Z71XVFRk/fOhhx4CIlsbGxu57LLLACzOoampyZQv3f3X0XE5sl+ef2VlZYt4MPWZ1Mz7svHDDz80r15xOgsWLACSqqrs1Z2GZ555ph3TznTMUWq6AEjWl2JmpBrW1NSYrQqml/I2ZMgQpkyZAmRWyVC5pHrfcsstptooy37qXa9Cn9++fbu1U41Bet1XSpfOorq6mj/+8Y9AFANWXl5uQdbaeZGCWFNT00KZKigosDhV1afmgEWLFnHqqacCUZxtJupT/U79Z8mSJVa3Gg/EoEGDzF7NixCNtZpTlFKhV69eHapStUaZagSuCsOwAjgRuDwIggrgGuCpMAyPAJ7a/X/HcRzHcZyDiv0qU2EYVgFVu7+uDoJgOTAAOBv4zO6P/RX4L3B1RxTy0EMPtVWp4hXkSQVBYPvASlo5cuRIJk+eDMT3LqXmHl5TU5PZoXgq7REnEgnzkioqKuy1eayCjuVv3bqVWbNmATBz5kwgmVL/lVdeASIPTav6ztpT1t/Tnrc89ZqaGlN59JnevXvbCTd5T3GJlRI6lahEqiUlJXaCZG+nR6UkyvPPycnZ49iy3uts5A0qNkEqy86dO1soa7W1tVYPig+SqlpVVWXes7zbkSNHmkqnv6NYlmXLlvHTn/4UiNr1pEmTrP2r7+puwo5qp/q9KnNeXp6NM1IR93YXpBSO5cuXW1oT9VP93IQJE0x1O/fcc4HkKaPW3GvYmahNTp061ZS01JN7autKm6E2smrVKktnIgWos+9427JlC7fddhsAs2fPBpJ1etxxxwGRqiqFJpFImOoi5b66utpUyGOPPRbIvIKfyhNPPGEnaxVDOnbsWJsXVX+pKpSUNr13++23m7rf3Kbi4mKbkzKJ6mPevHlAMg51X1dOKc5R42dubq7FfGluleI8dOhQO4HbEarbAfXoIAgGA58CXgYO273QAthEchuwQ+jTp481Fsnj6vDnnHOOXV6oATkOFzbuD5VfE0wYhtZJUlM8QDIoVwsg3emVl5dngZLaFtFE3qdPH9tSkcR5/fXXW+oFPUPlC+qsgV0NWFuv6rwTJkxg7NixwJ5Bg7oPS3bF4fh8KppgtUjKy8szubl5ZmuIJiAF2ffp08c+r9+RiW0fLV5E6v2XWuypfFu2bLHFkxYTsnXGjBm2ONIirLCw0AZ8BYuecMIJQDIT+F/+8hcAmyj+/ve/M3XqVCBqJ3u7A7Aj0G0JN910ky2QZZsWdLt27bIJSeUaNGiQZVnWxKVnOH78eBuXtH2f6WDzVFQWTTJDhgyxrUpNaLt27bJFotBnXnrpJTu6LkdgwoQJNqZ0pK16/osWLbL6Uv8ZPXr0Hpn8ZQck++mtt966x3t9+/bluuuuA6IAdN1Vl0nU/6qrq60+9GxLSkqsD2pLKzVtiRzURx99FEi2zeaHteQ0jBs3zubYTF0iH4YhCxcuBODOO+8EkvUpp019UeNo7969bU5p7sRA5OTpdf369fY8tUBrT7Gl1W5wEAQ9gJnAlWEY7nG3S5hs1XvdWA6C4JIgCF4NguDV5hedZgvZbmO22wduY7aQ7TZmu33gNmYLB4ONqbRKkgiCIJ/kQupvYRjO2v32u0EQ9AvDsCoIgn7A5r39bBiGdwJ3Ahx77LFtiuQrLy+3VAfNt8LOPPPMFoFpnU1bbNR2liTlOXPmmKzeXNUYOHCg3U8n+y+66CJTq+SpyMuora3liSeeUNmApGQv1WD69OlA5IHtT5lqjzpMRRmFle173rx5ptBIlRsxYoQlNJRM38Fe7gHbKA9O5Zw/f76pi/IUpUb07dvX2qy8qMWLF5tnpTYsNa4jtvs+yka1M3l1Ugfr6ups2071UlRU1CJD8tChQ4FkEkGlelCdFRQUtLBF22nDhg0z1UYJFXNzc005ldd9IAHA6bRV2TVlyhTbGtDflg1VVVXWB+XlduvWzbx6qSGyv72DXtu7LwrZ179/f1MQpRy/8sor1j9lu7aEt2/fbkqrtlWWLl1q9doWNbm1NkohXL16taWCST1EoD6lnYrUGzLUBnUo56yzzrLxsHkqj46gtTZqZ6G2ttbalsaYhx56yPqqbNQBkHHjxpnSqpCXvLw8s0mvOmQwduxYOwzTXtuaB9pW6+rqrL+lzgf/+9//gCjJs+ar/v372+ektHXv3p0XX3zRvoZIVR83bpy1Eymx7cl+R+wg+dTvBpaHYfj7lG89Anxj99ffAP7V7qVzHMdxHMeJOa1Rpj4NfB1YEgTBa7vfuxb4NTAjCIKLgbXAVzqmiMmVqOIn5PHIk4pT/MGBIE/2lFNOAeDiiy/mueee2+MzSj5WWlrK+PHjgUhN2lsAndI/jBo1yuJOFJMSBIGlS5DXnKkgWHk+8hx1vDf1e3FJlLcv9LylLg4fPtySx+kZyyvq2bOnHdVWEG9paant/2tfPxOB6GoHUoSUAHD27NkWbyIKCwu56KKLgCimRK+lpaWt8mrlRQ8fPtxiq+QVv/3226aMKE6psykoKPjIa33kyWczqh+p5+Xl5XZ4RUpr6rU5UnLUlvPz8zul/apv9ejRg/PPPx9IqqOQVIal6khx1WfKyspMtVEMas+ePWM55qhMvXv3tuuYFGzf0NBgCrjmxS984Qv2eSUCVlvu3r27KYVSgNTHiouLMz6X5ubmmtqrsjQ0NNhhM815qd/TboyURh06SEU29+zZ02KlMhKAHobh88BHPeXT2rc4H40eYBxOVrQH6iQKHr/22mv53ve+B0Q2qhGkyrP7QpPi4MGD7cTcd77zHQBefPFFW4hpmy2TeWFSyXSunbaiSUdb0LfcckuLQF3Vc35+vgUnazGVl5dnCzLVTSafhRyWb3/720DycIfuk9MkOmzYMGtb6Wa+zsnJaZHFf9CgQTagqv3HcZLLZjTWyEk47LDD7GSb6ubMM88EklszarPaoh4wYECnOGpqO5MmTbLAZY2dqfm9tNjXQZYjjjiiy4w5cizOO+88CyjXqcnc3Fwbw+UIpYZ+ZHpxdKDk5eXZovDaa68F4L777rNtZJ221EJ4zJgx9p4WjD169LDTs1ooanu0qKioQ+c8H6Ucx3Ecx3HSIF7JTg5C5D2k3heVLuXl5bbNp6DLqVOnmiel1tY/AAAED0lEQVQXp1vBswF5wPJ8W0sikYiV0io1QVtuQ4YMsZQVHe3lSn0qLCyMXQqMgxW1zVSlW9tDqXl9mtNZSqL+TllZmaWmUGBxXV2djXdxzTV4IOTl5VmWc71mG7m5uaaGagyaOnWqbWVKvZaqWF5eHpu7LcGVKcdxHMdxnLRwZSpLkcrwUYG0TuaJkyq1NzxWyRHNj9THrW2oLynGSK9O10LzlmKhIAoujzvx6hGO4ziO4zhdDF9MOY7jOI7jpIEvphzHcRzHcdLAF1OO4ziO4zhpEBzIvVdp/7EgeA+oBbZ02h9tO2XsWc6PhWFYvr8fCoKgGljRYaVqXw7Yxi5eh5D9Nra2nR4MNnpfjA/eFz+Cg8TGrO6L0MmLKYAgCF4Nw/DYTv2jbaCt5ewq9kH225hOOd3G+JDt7RSy30Zvpx33s51JtrdTaHtZfZvPcRzHcRwnDXwx5TiO4ziOkwaZWEzdmYG/2RbaWs6uYh9kv43plNNtjA/Z3k4h+230dtpxP9uZZHs7hTaWtdNjphzHcRzHcbIJ3+ZzHMdxHMdJg05bTAVBMCkIghVBEKwKguCazvq7+yMIgkFBEDwTBMGyIAjeCILgit3vXxcEwYYgCF7b/W9yK36X25gh2svGuNoH2W+jt1O3sdnvyWr7dv+M25gh2tNGAMIw7PB/QC6wGhgCFACvAxWd8bdbUbZ+wJjdX5cAK4EK4DrgB27jwWNjnO07GGz0duo2Hiz2uY3ZY6P+dZYydTywKgzDNWEY7gIeAM7upL+9T8IwrArD8H+7v64GlgMD2vCr3MYM0k42xtY+yH4bvZ0eENluY7bbB25jRmlHG4HO2+YbAKxP+X8laRS6owiCYDDwKeDl3W99NwiCxUEQ3BMEwSH7+XG3MSakYWOXsA+y30Zvpwe9jdluH7iNsSFNGwEPQDeCIOgBzASuDMPwA+A2YCjwSaAK+F0Gi9cuuI1uY1cg2+0Dt5EssDHb7QO3kQOwsbMWUxuAQSn/H7j7vVgQBEE+yYf5tzAMZwGEYfhuGIaJMAybgL+QlCv3hduYYdrBxljbB9lvo7dTt3E32W4fuI0Zp51sBDpvMbUAOCIIgo8HQVAATAEe6aS/vU+CIAiAu4HlYRj+PuX9fikfOwdYup9f5TZmkHayMbb2Qfbb6O3UcBuz3z5wGzNKO9qY5EAj1tv6D5hMMlp+NfD/OuvvtqJcJwEhsBh4bfe/ycB0YMnu9x8B+rmN2W9jXO07GGz0duo2Hkz2uY3ZY2MYhp4B3XEcx3EcJx08AN1xHMdxHCcNfDHlOI7jOI6TBr6YchzHcRzHSQNfTDmO4ziO46SBL6Ycx3Ecx3HSwBdTjuM4juM4aeCLKcdxHMdxnDTwxZTjOI7jOE4a/H/kCHTHhdLS8QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 3\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAABSCAYAAABwglFkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJztnXuYlVXZ/z9rDgxz4BAjBzkoyEFBg0QNhfIcKaSGmllX+maWZWZi/UqtzMxSC30vKyvLV6/MXk3N8mem/vCAKIngIRBDCRREBOUMw2FmnJnn98fD936emeE8M3s/M9yf6+Lamz17z6x7r/WsZ93f+173ClEU4TiO4ziO4+wdBflugOM4juM4TnvGF1OO4ziO4zgtwBdTjuM4juM4LcAXU47jOI7jOC3AF1OO4ziO4zgtwBdTjuM4juM4LcAXU47jOI7jOC2gRYupEMIpIYQFIYRFIYQrW6tRjuM4juM47YWwt0U7QwiFwH+ATwDLgBeBz0VRNL/1muc4juM4jpNtWqJMfRRYFEXRW1EU1QJ/Bs5onWY5juM4juO0D4pa8Nl+wDup/y8DxjR9UwjhIuAigPLy8iMOOeSQFvzJ/LFkyRJWr14dtvezjm5jR7EP4OWXX14dRVHPpq93FBv35XEKHd/GjmIf+LWI29gu2JmNjYiiaK/+AWcD/5P6/3nArTv7zBFHHBG1V7a1fZffS0e3sT3bF0VRBLwUdWAbfZzuOza2Z/uiyK/FyG1sF+yujS0J870LDEj9v/+21xzHcRzHcfYZWrKYehEYGkIYFELoBJwLPNw6zXIcx3Ecx2kf7HXOVBRFdSGEbwD/DygE7oyi6N+t1jKnwxFt2zlaX1/f6DGEQGFhIQAFBQX2muM4zt7Q0NBATU0NkMw7oqSkpMPNM03n1rq6Onutrq4OgLKyMptnndanJQnoRFH0KPBoK7XFcRzHcRyn3dGixVRW0Apcjw0NDbZCb2hoAJLVeWlpKUVF7d/s+vp61q9fD8CWLVsAqK6uBqBXr1507doVyI7ntXjxYqZOnQpAVVUVAJs2bQJg48aN1t5u3boBUFFRwUc+8hEAjjzySCA7tuwOmzdvBpI+iaLI2t+lSxcgVuHa21hUsmUa2ZV+XZ5/+rX21H/7Cu+8E2/IfvPNN4H4muzcuTMAo0ePBuJrMuuKxgcffADAggULAHjppZd46623AFi5ciWQzC0lJSWUlZUBydzSu3dvDjzwQACbi7KK7mmLFy9mzpw5AGzYsAGA999/H4BHH32UV199FcD6rm/fvpx//vkAfP7znwegX79+QMe5NhsaGuy+qH5funQpECtzAwbEad561DzVGvhxMo7jOI7jOC2gfbnFJCrMkiVLAHjrrbdYuHAhkKgBL7/8Mm+88Uajz0kBOPPMMznhhBMAGDduHADFxcVt3u6WEEUR//rXv4DY44LYo/zHP/4BJJ6HlJ7DDz+c8847D4CTTjoJgE6dOuW0zeK9994D4L777uPWW28FYO3atcD2VYt0HtUPfvCDRu8//vjjgdizzCJRFPHPf/4TgCeeeAKABx98EICtW7faGNQ4PfTQQ/n6178OwEc/+lEA9t9//5y2eXukFV55ui+//DIAa9asMRVg3bp1AJabUlhYSG1tLRDbCzB9+nTzmi+55BIAjjnmGCBWPrLgEcvTT+ebqF36mRTGEII9l10VFRWmekjVyfKcEkURM2bMAOCxxx4D4IEHHgBg/fr1VFZWAqC6QBMnTuSMM+J6zL169cp1c3fJ1q1bbS6UGvPb3/7W+qlplKK0tNTGsBSqI444gtNPPx1I7JZqJSU538iexx9/HIDbbruNF154AUiuQY2/EIJdx7oW33zzTa6//vpGv+PKK+NT4MaPH58LE1oF2bV27VrmzZsHwGuvvQbENqqfFQF58sknATjooIM4+eSTgcTu1lSm2sViaunSpfaFaAL/wx/+AMQhIk3gukk1NDTYF6obmP4/ZcoU+7377bcfAIcddlgbW7B3aHF0//33m2R9++23A7HdmvB1AWnSePfddxkyZAiAPQ4dOjR3DScZ8G+//TYQ96FCrUKTVFlZmV3wek9NTQ1XX301AOXl5QDcddddAJx22ml5WxzujJqaGlv43XzzzUAykRUUFFj/6LtZuXIlzzzzDJBc3BMnTgTiibw1L/Q9QeOqoKDA7Fm0aBEA1113nS0iZIfen+4TXZPpsOCll14KwDXXXAPEYzJfIRX1xfLly83xWrZsGRA7AHJQNG8oRN23b18qKioA7AZeVFRktn/xi18E4MQTTwTgqKOOyls/7oi5c+faIuqGG24AEgelZ8+eFibRnLtgwQJef/11AC6//HIA+vfvD+Q3PKS+eeONN2wRddtttwHx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\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 4\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 5\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 6\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAABSCAYAAABwglFkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJztnXuUXeP5xz977rlMJjdiRCRxa0QQERJVEYIGKUJdqpTWrVSUqktZri2lLq1FtYtQYlF+CJW2qSiNakUEjbtEBBFJpNLJXDL3mf37Y+f77DOTIMmZmbPPyfNZa9bMnDnnzPuc993vfp7v+7zPG4RhiOM4juM4jrNp5GW6AY7jOI7jONmMO1OO4ziO4zhp4M6U4ziO4zhOGrgz5TiO4ziOkwbuTDmO4ziO46SBO1OO4ziO4zhp4M6U4ziO4zhOGqTlTAVBMDEIggVBECwKguDSjmqU4ziO4zhOthBsatHOIAjygYXAwcBSYB7wnTAM3+m45jmO4ziO4ySbdJSpvYFFYRguDsOwEXgYOLJjmuU4juM4jpMdFKTx2oHAJym/LwXGtH9SEARnAmcC9OjRY89hw4al8S8zx0cffcTnn38erO9vuW5jrtgH8Oqrr34ehuEW7R/PFRs353EKuW9jrtgHfi3iNmYFX2ZjG8Iw3KQv4NvA1JTfTwbu+LLX7LnnnmG2srbtX/m55LqN2WxfGIYh8EqYwzYmcZy2traGra2tYUNDQ9jQ0BA2NjaGjY2NYWtr6ya9X5JtbGpqCpuamsLa2tqwtrY2rKmpsb9tDH4tdp6Nzc3NYWVlZVhZWRlWVVWFVVVVYV1dXdjc3Bw2Nzd32P9J4jjtaNzG+CsdZepTYFDK79usfSwRNDQ0APDJJ5F4FgSRYzlw4EBKSkoy1q50aW1tBaC+vt5sKioqAiA/Pz9j7eoM/ve//wFQUVEBQHNzMwBbbLEFvXv3BiAvL3s3pIZhaH2Yq7S0tPDggw8C8PnnnwNQWloKwIQJE9huu+0y1raOIgxD3nzzTQA+/PBDAJYtWwZAWVkZxxxzDADFxcWZaWAHoHlnzZo1bX4vKSnJOrtWrlzJ73//+zaPlZaWsu+++wIwevRoAAoLC7u8bZ1JY2Mj1dXVAPTs2RPI7jGZNNK5E80DdgyCYGgQBEXACcBTHdMsx3Ecx3Gc7GCTlakwDJuDIDgXeBrIB+4Nw/DtDmtZGjQ0NHDvvfcC8Ktf/QqAU089FYBzzz03a5Sp+vp6IIpyFdUryn/55ZeZOHEiANtuuy0ABxxwgP2ezYoNRFHUP//5TwBee+21Nn/bddddOfzwwwHo3r17l7dtUwjDkPfffx+I1dIBAwaw1VZbAdC3b18gu5W29fHOO++YWvPLX/4SwNSoXr16MXjwYCC7VdWGhgZeffVVAO68804gVlVvuummrFc4WltbmTdvHgAzZ84EYpW4sLCQyZMnA7DTTjsBJHZ+bWlpAeCNN95g/vz5AHz22WcAjB8/nv/+979A7l2Duo+8/vrrvPjii0CsTI0fPx6AoUOHUlCQzkKVk9anF4bhX4G/dlBbHMdxHMdxso6cckWbmpoAuPHGG7nrrrsAqKysBGCXXXYBoE+fPplp3AagCOLpp58GMCXjjjvuYMWKFQBK9icvL4+PPvoIgCFDhgBxTspJJ51kike25eQoF2PWrFmmSD3zzDMAHHzwwUAUVWWLkqHcvQceeMAUqYULFwJRJK9o8Dvf+Q4QqzbZHh0vWbIEgOnTp3PzzTcDsTKwzTbbALDDDjtktZ26Fh977DEeffRRAN5+OxLnv/WtbwEwduzYrLVR6tOcOXNMEZ8+fToQ5YIBnHjiiTz33HNAnH+z4447JtJmqVAvvvgib7zxBhDlX0J0X9hzzz2B7FZJ18d//vMfIJpTNWY1F9XV1QFw2GGHMXToUCD37O8qkjfiHcdxHMdxsoicUKbkbf/tb38D4LbbbrNdJ5deGp1yM3LkSCC5EX9DQ4O1/4ILLgDiSKqlpcWiPikZAwYM4IQTTgDiSEK7+lpbW7NOkRILFiwAYN68efzlL38B4JBDDgEwtW3XXXc1W5OKovrZs2cD8Nxzz/Hpp9Fm11R1VPklVVVVQKzeJHWcfhVS4qQm3nbbbfaY8sLOOOMMAIYPH5614xRg+fLlQKQgS0XVTrDTTjsNgPLy8sw0Lg00dl944QUALrzwQlPJNV6lLhYWFtqcpO9J7dPXX38dgCeeeIJu3boBWN7p4YcfbvNLrqCVCuVJzZkzx1YzNL9873vfA6JdqP379wewndLOxpETzpScEA2MmpoaS8rWTTfpW7BXrFjBU09FmyGXLl0KxDfWwsJCevToAcCIESMAGDdunCVfa2IYMyaqmdqvX7+ua3gHIWfi4YcfBqJlsb322guIlw8OPfRQILpBJXXCFm+99RaAbYR4+eWXTUbXWCwsLGTQoKi6iJZNdCMrKChIvI3taWpq4r777gPgiiuuAKC2ttZKIZx99tkA7LPPPkA8brMNLcfffffdQOQwy0FWQu/YsWOB5DoWX0RFRQV//vOfgWizDkRLQboG99hjDwAmTZoERJsIdPPVtvukIWd+zpw5QLQ54KyzzgKwa3LYsGE5tby1Zs0auxZvu+02ILovpqaJANbXxcXF5vhrLsq2sZtpsjP8dRzHcRzHSQhZr0xNnTqVSy65BIDVq1cDUbT0ox/9CIiSsSG5yyaKFBYsWMCzzz4LxOqECILA7NE267KyMltS2H777YG4GGK2bXENw5CHHnoIiBQpiFRG2TVu3DgAtt56ayDZCZIag7NmzQIwtTE/P98UGSW9brnllmy55ZZAnAi6atUqIBrDUh6T3p/a+HH99ddzxx13ALFK0aNHD1MBpJxm8zJCGIY89thjQHydLl682Eqv7L///kC89TxbUGmH22+/nUceeQSIFbg+ffrYHKulIH3v3r27qVbq16QVo/34448BmDZtGhCpNrruVE4m6dfYhtLY2AjALbfcYpuwtBxdVFRkfaWNPtoMM2PGDCs3k6S+S0Vt1neI7+tqcybbnkwPw3Ecx3EcJ0vIWndcxzecffbZFiFKmbn22mstfyrJpRAgVqaqqqqs0J+8beV7XX755abSKN9m+PDhlkeVVNVtQ6moqLDjN9Rfw4cPZ8KECUCcuJzUiCmVDz74AIiKNabSu3dvyzdRVFxeXk6vXr2A+PgRRZFNTU22aUKJsUnrZ0WIKuVxww03WJ6f+vGkk06yPL+dd94ZyN5cKYjybRTNK6F58uTJZuPee+8NJK+vvojnn38eiPNNlyxZYiqNDqadMmWK5Uhp7KqfKysreeedd4B47Pbv3z8RypzG57///W8gnj+uuuoqK5UzYMCAzDSuk1Ch45tuuona2logXs0oLi62e4pURKnKu+22W2KvSyXSK59WmyAGDRpkKn+qiqoVDKGxmJeX16n3kKxzplSl9pvf/CYQSe266Rx99NEA/PCHP8yaM4c0Kb399tttko8Bu9GWlpbyjW98A4gns8LCwqyZsL8ITXbPP/88N954IxAnLo8ZMyarnCiIHON3330XiJfrNJGNGzfOkl2V4FlXV2fLYap7o98LCgrMuZZTOWDAgET1uW6iJ598MhAtMSiJ9fTTTwei5U0tCWkS1JhP8nJte9TmZ555xvpq9913ByInUTtOFdAlHTmEZ555JhDXBSsoKODWW28F4vnnhBNOWGc+1bXb3NzMypUr7bUQXQda0s7ktatNLU8++SQQ70DcfffdbYNArizvKb3gJz/5CRAtZer60j3jggsuWGfHpZYFBw4cmMjdjHPnzrVd3bfffjsQ27rFFlvYvV/9CbGjqDGqQKdfv34W0HZGvydnZnYcx3Ecx8lCssYt1/ZWnX0lSRng/PPPB+Iq0kmvQZSK7HryySftZ3nNijL23XdfWzZRRJEkhWJTUfkA1QKDuB6Y1JtsoqWlxerxaPlWaswhhxxiSptUjtLSUlOypAzoDLTVq1dz4oknAnEl/KQsSSjiv+aaa4A4UiwoKDBFSgpVcXGxyfSvvPIKEG8kKC8vz5o6TKps/tJLL1kNO51FN3LkyEQsa20oy5Yts2tOCpXmnDvuuINjjjkGiJPM14fmofr6ekvw1vy13Xbb2RjPpPKjbf+qs3TllVcCUXmHXFGkNM9oCUzzCcQbPk455RSg7TLXwIEDgXiZb+zYsYk6Q1JpDzfeeCN//Wt0Yp3Gl1TS8847z+YP2QOxoqqlP43FhoYGU1Gl1nXkOMj+O7LjOI7jOE4GyRr3/F//+hcAv/jFL4BYmbn//vs57rjjgOxSpITODlyxYoVFGe23eS5dutTW+5V03tLSYl611r3luaeWVtD2+h49eiQm90jt05lRCxcu5Ne//jUQr2+XlJTY59H+exAEiVTm1qxZY9GQ2qdzEysqKizHRnl/ixYtsir3c+fOBeJoaquttrLPSdFjUnj55ZcBePzxx9s83rt3bw466CAgbvPKlSupqKgAsPMllaTft29fy3PUuE4ayruQijpt2jTbXKAcuGw5K1LjadasWfzpT38C4nH6/e9/H4jyTr9MkRKaa1577TUbu1IA9tlnn4zPNZorIJ4fdS22Lz0jNGaltOqz6du3b8bt+SI0f0h1S92Mdf311wPxBp78/Hy7R0pdlbKTlELPGkNSo2bOnGmPaf484ogjgKgk0KhRo4C473r16mUqsRR0JeLX1NTYdawVEClUHUHy7kiO4ziO4zhZRFYoU5988omt8cvzVsHKIUOGJGqtd2ORR11bW7vOTovf/OY3QLTjRhGIcokKCgosgpTCo7O09tprL3tfvefo0aNNNci0qiNlQ9FwSUmJRR2KnGpqaqxf33vvPSCOhvv06WPHBSUpt6q6utp2c6ntUlwqKyvtmCCd0bd48WI7CknRsKJI7YaCWB1JQnRcU1PDSy+9BMTRv2w977zzLCpUzkNlZaXtUNSxFirzcfjhh9sZfocddhiQPHVZ+UA//vGPARg8eLDZqz7r16+fqR/KkUsiyr0799xzbUxNmTIFYIPypCBWTlVS4emnn7bSGDorNAkq+IIFC7juuuuAqFQOYOUQ1lc0trW11fIWzznnHCAuczF69GgrDZEkBbKuro77778fiNVuze0nnniiKXGpO/eUe6v+1/WW6f4SWqnRbmiIVTMpUiqHUFpaauUcZEdeXt46tuk6/fTTTy1/U2rXfvvt12H5jlnhTM2ePdsOEtVgUVJdv379TM7TJJeXl8fixYuByBGDWPIbMGCAlRnItFMBcQ0NiB1FDQZtjb/nnntsstZjqc8XuiBmzJhhf5ONV111lQ0abQ/t6roiOmTzlltuAeLB/uijj9oyZk1NDRAlGSo5dv78+UCcLFteXs4OO+wAwNe//nUgukFnekJIXapqf/hrGIZWZVpOyJNPPmmOhmowKam5sLDQxvPgwYOBZEx4y5cvt63z4vLLLweim5TOP0stf6AlCKFrceXKlRx//PFALLerPzON+kh9pnE5atQoFi1aBMRL6AsXLrQb14EHHggk63wzzQV///vfgShw09jSjUrBzBe1V8tCWn5RFfjZs2dbQrDG6U477ZTxuXXRokXWTwpQ5CiuzyGqr6+3LfgKSlWfau+997YbeBJKPoipU6dy2WWXtXlMc+qhhx5qToT6rk+fPrYJpH0gVFBQkIildiWPK1ju2bPnOgGW5pbq6morU6Igtri42OZcOf5KOv/oo4/sM9H37bff3oK7dB3lzHsTjuM4juM4WUyilSl5z3V1dabWtI94li9fbp7qhx9+CEQJrj/72c/aPE+qzKmnnmqRlGTcTEQZsk0Kmrzo9T2nqqrKzm5LVaPUbnni+myamprsMXnbd999t3nv2prelYpHS0uLbVWeOXMmEBdaq6qqsihfdi5ZssSSBbUtXRHWZ599xqOPPgpEheggUhwzXTCxurp6nYjva1/7mv1df1P1/uLiYivnkfoeQuNUql0SWLVqlS0ht98oUV9fb+NOS7K//e1vbelL3zWG1Z+Q/PP6ND6XLFliieeysba21gqY6jqWgjF48OCMqzRSv/W9uLjYlnvabxFvbW219mrOXbp0qSWsS72RWgzxGFfqRSaTmdXmqqoqG2can7qeUpPT9fx58+aZYpq6aQSijRPq37322gsgo6klUlUqKyvbnFMH8WrD8uXLbX6XXR988IGpNPoMlHIwcuRIdtttNyCz5Sz0v1UEd8KECUyfPh2A3/3ud0CUTgDRPKLnS71KVbH0Oeme0tTUZBvZVPQ7db5NF1emHMdxHMdx0iArlClYVz1R3sbIkSNty7WUjMbGRvPYpcwoYrz//vtNpVKE2ZHbIzcU2aboSTlRELdZEWJBQYE9puhq6tSpFi3LO1di9yOPPGIJifK8V65caRFKe2WhK3jooYesCKls0SnlNTU11l5F+8uWLTP7tX4unnnmGdter+KtNTU1GVemamtr10kWVzsBS0BX7teBBx5oz9N4UOJ2WVmZJQWrn5NAa2urKUzqq6lTpwLR9aQkXiWQlpWVWYTcXl3WeAQSW7xTKoXUwV69ellfSRGfPXu2XVOKjFU88YADDrA8qkyhPvnjH/8IRG2UwqK+UD5jfn6+jTcp/S+99JLNrVJo1PclJSWmMO+55572HplC8/xZZ51ljynPVHNMUVGR9ZM+m9Ril9/+9reBuIDu4sWLTdWTmppJJVXqkormQqyUaQ5csWKFbUyS/bfccouVCVD/Scm6+OKL7TNR/mYm+1Hq5s0332z3PJViUeHu4uJiu2/KrrKyMnu+zrFVUntBQYHljGkzVp8+fTrMzkQ7U7rRlJSUWEKnnA99ePPnz7eJTJN1cXGxJR3qvCENwNWrV5tcqItfOzW6EtmhWiDrQzet/v37c9FFFwHR4Y4QVXxVQqWcKX1GZWVlZqOkzvz8fPt7Vy4byc7333/f+kk3TrW7tLTUdk1pMqyqqrI+1jiQXFtZWWmTwPDhw4HMOMTtKSkpYdq0aUBshw7Dff/99+2i1c1q6623thuznF7V7Nl5552thkqS6NGjR5ukeohvUhUVFTZJq8/y8/NtctONSM8pLS1l1113BZK1KzMVOeuaP6qrq+3Gq/4cOXKkXZdK8lbieuq5mpnaqajkeQWdYRja9Sb7dEBur169bCzKIb733nut7brudC2GYWjOVFIq9EM0x8lGOULPPvssEN0TtISnsVtXV9cmoIX4Og2CwALwJJz5qnYVFhbaPU/J4+qn9957j+eeew6I0wrq6ursutTr1I9XXnmlva/uO9rkk0nKy8v56U9/CsD48eOBuKZWXV2dOZG6Frt162a7/mSH0kQqKirsMX1eHRnE+TKf4ziO4zhOGmSFMjVw4ECrYaIziORZNzY2mrSp83nGjh27jgz71FNPAZHkKYVEUVZq0mVXoWhRSfDyniGW3qWqXXbZZWaPPOktt9zStpEqokqtU6XIK7VEgqKqroyQU6t36/+qHVomWbVqlakW+l5dXW2vlQKi7dg1NTVW90fRShLqv1RUVNi4lDKltre2ttpyl5IrU9F2bKkBY8aMyfiy5fqorKw029qX8mhsbFynbk1zc7NtstDzpUKdeeaZVqYj00na7dHYlHKjpYLVq1dbGYGDDz54nddpbGv5qLGx0a7PTClT+mw1X1RXV9sSq5byNF/MnTvX1Bp9Bt26dbOIXmqx+rKwsNDSJZLQh2rnsccey+233w7AAw88AMBpp50GRBtYUscstN08oWX41DICulckQZnSEthRRx1lS1+6JlMr9rdPJE9N61BfqY9bWlq45JJLAEwt3m677TLep/n5+bbsqGtw2LBhQLQ0rf5QRfNRo0atkzohxW3x4sVMnjwZiM67hY7tz8yPfsdxHMdxnCzmK5WpIAgGAdOAAUAI3BWG4W1BEPQFHgGGAB8Bx4VhWNEZjRw/frxFTvI6tb2+vr7eooaJEye2eQ7E3qmUoPr6evNsMxlRqc1aly4oKLBoT9GCfu/du7d50IpKwjC03AbloKiA2X333bfO51VcXMx+++0HdK2Ko89fOWwQRxhSobRuD7HNYRja85TroL9deOGFlkCoYnpJYIcddrA8JyX0KmLMz883pSk1YlSS6IIFCwBsy/qoUaMSEQW3Z7fddrNt/6renppY3n6rtnL2IM73U9XtSZMmrbO5ICm0V3NESUnJevPzlCulav26vvv375/xqugqhXLUUUcBUSJv+5w+5RUVFhba9ai5o2fPntaPUqbUz+ecc46dp5kE1G9Tpkxh9uzZQKz6qhJ637597Xman1LPAm2vLp9//vkccMABbd4/k2g8XXvttdZGnSSgfky9FlPzGHVvaa/ehGFomy1UxDIJtkI8X+q+rXIy9913n91Dviy/VOprZWWllfGQktWRNm7IOzUDF4ZhOBwYC/woCILhwKXAs2EY7gg8u/Z3x3Ecx3GczYqvVKbCMFwOLF/7c3UQBO8CA4EjgfFrn3Y/MBu4pDMamZ+fz6GHHgrEXrnWiuvq6kyF0bbdXXbZxbzxGTNmAPG2dIiLfmUyKpYdWrvdZZddbNeFogcdhXPddddxxhlnAPH6b15enm15VX7GE088AUTRcfuCdZMmTWpTQLKrSD07Sbkyiib+8Ic/AFGJAO0wVIG2lpYWO49Q/XTFFVcAkS1J3ErfvXt3jj32WAArUJp6TpTGqQoflpWV2XlpUqHOPvtsAPbff/+ua/hGUFpaatvOtQNMeSdBEFikm7pzccKECUA81o888kggznFMIu3zFqVGVVZW2rhUnuOOO+5or1N+xw9+8AMgOvMuk0UQIS7voDH1wgsvmA0q2ih7U3O8NHesXr3aFCnlMWp3W+/evRNxDEl7+vTpw1VXXQXE5z7qWly1apX1ieba7t27r5Njc+GFFwIwbtw422afBNQv2267rRWn1g5T5SdCbG/qHNR+R7F2w5WXl9vnlaQiwakob1i5h01NTevkRqfOQSrQKdV/6623tnI8nXFNbtQ7BkEwBNgDmAsMWOtoAawgWgbsNHTB6saqm+l7771nE4M+tEWLFtkyiyRrXTRXX321Jb1mcpLTBaFt0w8//LA5ftr6KYdw7ty55kwqQbmwsNCckptuugmIlzIhtk1Le9dcc01GqvbKzv32288OEFVdIjmDs2bNsmUETdbdu3e3ulRyyL773e/a35JIfn6+fd4///nPgbj0RU1NjU106oeWlha7iSk5VmU62i8vJYW8vDybkNVGJSw3Nzfb31Sy4ogjjrCEey0HJTGx/otQ+RGNuY8//tiW0zVWhw4dav0nx0qOY6YdKYhvPloar6+v58EHHwTgxRdfBOIbbvvzPvV89au+69pMTfhNEgUFBbY55aGHHgKw+8Sdd97ZZsMPRE6ybswKXLXBQEtCSaOoqMgOb9bcqPmmoaFhnbpuLS0t5gTLwVSAPXHiRCsVlMT+hHjsKTjYY4892tSihGi58h//+AcQ152Ur3DRRRdZsNMZbPCCYRAEPYHHgfPDMKxK/VsYWRR+wevODILglSAIXtGkm2vkuo25bh+4jblCrtuY6/aB25grbA42prJBYVMQBIVEjtSDYRhOX/vwZ0EQlIdhuDwIgnJg5fpeG4bhXcBdAKNHj16vw7UxKOJVtPHII49YgUotdxUVFZlXrmhD2z4POuigDk+YTMdGedvDhg1rU6oB4gq39fX1XH311Rv8nsXFxXb2kLYHp7Ok2RF9OGLEiDbJ5RBXsW9tbbUoXwXXJk+ebInOkp07U1nrqHGqpSslSeq8q0svvdSk+NQq6VIylFypSLMz6AgbgyCwaFbLfVqunThxoiU7S5E57bTTurSYY0fPN0rGlZqqjS8QR/xHH320RbydXf4gHfu0ueH444+3dqrgpjYTLFu2zJajRV5enqUlKBFbc6hKu3QkHdWHmlt1koCStYuKiuxeIbWqoqLC5huN784smttRNkoxPeWUU4B4/pg5c6alwqiUx9ixY00V1lyq1YLOUPs7+lqUYqaVpVWrVllxXPHWW2+xaNEiIB7vWiWYNGlSp26++kplKogsuAd4NwzDW1P+9BRwytqfTwH+1PHNcxzHcRzHSTYbokztC5wMvBkEgY4Kvwy4Afi/IAhOAz4GjuucJrZFEa+ihylTplhEobybwsJC88ClgsibTcKxI1+EijoqH0GnsLe0tDBnzhwAbrjhBqDt+YNCZQLuvvtuSzbN5BlSqQRBYLkHWvOWGrPVVltZcrr+VlZWlohCnJuKygCoT2bMmGEJkTpDsXfv3hZJKlcqqfkKqUhNu/jii4G47UOHDrV+zOa+S0Vq8ZgxY4BIiZEilZSt4xtLUVERxx9/PBDnSEmhyMvLs5IkOleypaXF8uJks3IDk5ATtqFIXTv99NPXOV8xLy8va/sT4vlGOX4TJkwwRUabW4qLi+3nbLZVKtqQIUN47bXXgPg+P2LECPMHVHZI+cadXWpmQ3bz/Qv4ohl+Qsc2Z8PRZN2/f3+rL5UrSILVLiiId+JcemlUgWL58uW260aOo74ryTBpyFGQ/KqlsFxGE/igQYPsBqbvYRhmtdMhR0OJq7lMNvfTlyFnKDXI1A1ZS5wQ36yywdnfEGRHNjmDG4KuyW7duiV2E0u6qO9GjBhhKSC657W0tNi12v40hs4me91Tx3Ecx3GcBJBbbnkO016i1HKYkz1ks7TubN7kiiLl5A75+fl2IkgS8NndcRzHcRwnDdyZchzHcRzHSQN3phzHcRzHcdLAnSnHcRzHcZw0cGfKcRzHcRwnDdyZchzHcRzHSYOg/anLnfrPguC/wBrg8y77p5tOf9q2c3AYhlt81YuCIKgGFnRaqzqWjbYxy/sQct/GDR2nm4ONfi0mB78Wv4DNxMacvhahi50pgCAIXgnDcHSX/tNNYFPbmS32Qe7bmE473cbkkOvjFHLfRh+nnffariTXxylselt9mc9xHMdxHCcN3JlyHMdxHMdJg0w4U3dl4H9uCpvazmyxD3LfxnTa6TYmh1wfp5D7Nvo47bzXdiW5Pk5hE9va5TlTjuM4juM4uYQv8zmO4ziO46RBlzlTQRBMDIJgQRAEi4IguLSr/u9XEQTBoCAI/hEEwTtBELyw5FK7AAACUUlEQVQdBMGP1z5+dRAEnwZBMH/t12Eb8F5uY4boKBuTah/kvo0+Tt3Gdu+T0/atfY3bmCE60kYAwjDs9C8gH/gA2A4oAl4HhnfF/96AtpUDo9b+XAosBIYDVwM/dRs3HxuTbN/mYKOPU7dxc7HPbcwdG/XVVcrU3sCiMAwXh2HYCDwMHNlF//tLCcNweRiGr639uRp4Fxi4CW/lNmaQDrIxsfZB7tvo43SjyHUbc90+cBszSgfaCHTdMt9A4JOU35eSRqM7iyAIhgB7AHPXPnRuEARvBEFwbxAEfb7i5W5jQkjDxqywD3LfRh+nm72NuW4fuI2JIU0bAU9AN4Ig6Ak8DpwfhmEV8Dtge2AksBy4JYPN6xDcRrcxG8h1+8BtJAdszHX7wG1kI2zsKmfqU2BQyu/brH0sEQRBUEj0YT4YhuF0gDAMPwvDsCUMw1bgbiK58stwGzNMB9iYaPsg9230ceo2riXX7QO3MeN0kI1A1zlT84AdgyAYGgRBEXAC8FQX/e8vJQiCALgHeDcMw1tTHi9Pedpk4K2veCu3MYN0kI2JtQ9y30Yfp4bbmPv2gduYUTrQxoiNzVjf1C/gMKJs+Q+Ay7vq/25Au74BhMAbwPy1X4cBDwBvrn38KaDcbcx9G5Nq3+Zgo49Tt3Fzss9tzB0bwzD0CuiO4ziO4zjp4AnojuM4juM4aeDOlOM4juM4Thq4M+U4juM4jpMG7kw5juM4juOkgTtTjuM4juM4aeDOlOM4juM4Thq4M+U4juM4jpMG7kw5juM4juOkwf8DAQfHFMgMf3sAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 7\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 8\n"
     ]
    },
    {
     "data": {
      "image/png": "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W96SPP8pU6aYt6Tdc4cOHcwWJR3K++vbty9XXnklkNyHvn37ZlWJW716NbfeeisAt9xyC5CELIuLiykrKwNizwLidlKbv/rqqwCmQJ5++umMHTsWiOV2gAEDBqRSzVE/LSwstGRrefULFy60JNfnn38egD59+gCJrWlE3q/6pzz4Pn368IUvfAFIVN8ePXqYwlReXg4kYc4oiixRXW335ptvWv9X2F4edjaUKalw06dPB+Chhx6y61P4rn///naNUniefPJJIO7b48ePB5KwZZrQgZ4777wTiO2TDUqNOOaYYxgxYgSQHCJQe1VXV/Pee+8BSfsMHDiQOXPmALFaCdj4jqIo6+O0traWGTPikoiPPfYYEIeJpJqpv27YsAGI1cWlS5c2+BtpUaW0HirkLsWta9euTJw4EUjaKooiWw+lPkrFqa+vT/3auGnTJiBOrge48cYbd0orKCgoMHVcr7onH3/8MT/60Y8A+NrXvgbAuHHjGDp0KJDMy/u6Troy5TiO4ziO0wRyRplS4qPyJ3blGWTuwNetWwckuVXanZaUlKQ2V2rNmjUAlkfz+9//3n7261//GsASO3v27GlenxJhn332WQCWLVvGDTfcAMD3v/99AM466yzznlvTM5TH8Nprr5n3q6RB5dWMGzeOU089FYhj97pGeby33347kCRNPvLIIzz++OMAXHfddQCcdtpplhuQhvbN9NwhVtcmTJgAxF4jxAqNPEsl++repFWZqqqqYtWqVQB88MEHQKI6jB07lu7d4+fWqq+deeaZ1mfVLuoTNTU15m1KIYGkrILyHZVP1q5du1ZvW/U5KaazZ8+2wy/yfNu3b2/Xr1zNd999F4DXX3/dxrXybbKtzGSie61+uHLlSvPapSCeccYZpio2bsOtW7eakqWfbd26lc985jNA0q6NyydkA13z888/3yDHBuKSOVJmtLboWpcsWWLzk5S5tBTAVP6QVFzlG5aVle1yrGjukeomO9KsSmkN13qoyEZNTY21leabQYMG2WEHRT5UmmXlypWmzEnd6t27t9073QvNvXvbV9PRI/YADUYtwMrKLykp2aXRqu+jEMRPf/pTIJ7c07DYNqa+vt5OJPzud78Dkolo8ODBlnCtTrNt2zYbAOoges/SpUttsGiy3LBhgw2k1pzQtIldvHixhbQUjjzllFOAOIF+zJgxDX62detWayedCFKS8uLFi20jqfBYhw4dLBFfG+9sTtyNr69Hjx7WJmrX5cuX71RfShuPtLJt27adQu4KAfXo0cPCrwcddBDQMMlc6OuCgoKdJq4XX3zRQmuqPdU4xN0aaOFVYvkvfvELIJ5otWFUP6usrLRJXXZr3K1bt84cu8Z1b9KArk2HCMrLy20xUopAnz59dpozMx1XocVr5cqVXHDBBQBceOGFQNKW2USL8uTJk+2knjaOnTt3Npsab5TWrVtnB0lGjRoFpGfzoevQq8QGOSCN0cZe85M2Y2lcEyF2MqdNmwYkfTRzg64Eeq0RmWNLfVNzzPLly81ujWudsIbkHuzrIaB03kHHcRzHcZwcIWeUKXkLhx9+OBDLeRBLso2PQi5atMgSBiXJn3322QDmVaaNLVu2WGKrdt5KiLvhhhusbo084CiKTHVT4ufixYuB2EtRsquOgPbr1y8rHrE8n8LCQmtDHZWXdH700Uebly+KiorMixCZ0rTaXPeovLzcFI3Gfysb6F6rv1VWVvKPf/wDSLz07t27c/LJJwNY7bO01ySqrq7mwQcfBBKPT2Ny+PDhFt7Zk7BOQUGBhfkUqv7ggw/s70mF1WtrIkVV4613794AXHXVVaYeqn+2bdvWxmJjew866CDzePU306QCNFbZxo8fT79+/YDkvu9KhdH4q66utiTgv/3tb/Z7UqbSlHSvsgDr1683JVzKcGFh4U7K1H333QfEldCluGq+SQtqmwEDBgDJHBlFkbXR66+/DsSpBhpvmnd0H9KG1o3p06czZcoUoGGNRYjbQoqU1sD6+nr7XfHmm28C8XhtrA4PGjTIVMfG6Qh7S3pGteM4juM4Tg6SM8qUaLyLfPnlly2PSrz66quWeJ1ZyDLN1NTU2O76Zz/7GZDkivTo0cPs1c5648aNlrQsRUYJ6O3atbNnEspjyVZxy8xkY3l8ai95rZnHpeXtL1++3Dyqhx9+2L4HsS1K5lXC5cCBA7OSE/ZJZD7XC+JjvVKd9Dpq1ChTqaS0puHaP41Vq1aZmqFkXHlyq1atsoRetcWnUVVVZbkryt056aSTrF9o7GYjeTmz3SBReDMLk2YWd9TRdCW76j2HHHKIqVtpUqSEvHiNp7q6Oksol+qROT41nqWAzJ8/36IAKilw+eWXW+5YGlBbStno2bOntafU1e3bt9vco3bVvDp16lRTjtOG2iWzBAvATTfdtNNTJWpra61fStFJ67P5lNs1f/58U32F1pF27drZuqh+nKmUqqSOxmaHDh1sTvniF78IxOU/lPPZ1IhG+ka34ziO4zhODpFzypS81LPOOguIj0+rAJl2lkcddZTFwlXQM41eYSadOnWy0zN6TIUKOBYVFZmXJG9j2bJlzJ07F0jKH8jGqVOn2mmOgw8+uJUs2DXylCoqKkxFEjpR0b59+wbHkCHO//rwww8BWLBgQYPf69Spk5UZkIfZq1evVLWxisQqF6i0tNQUKSkvpaWldn/SWgpByPN78cUXTZGS9yjP/6OPPrJTtJnFOxsrSlII3n77bfMeMwvm6f16Xlg2VFWdWNSpPHnD27Zts34rj7mystI+V96j8gIPOOCAPVLpsoWuW4r/M888YyqHlKbMY/ayXc8/++CDD0yN/MlPfgKkN+9P8+nIkSPNHimP9fX1puDoUSt//vOfARg9enTqFWOpxV/96leB2AaNy0wUFdBrWko8NEbzzZgxY6zAquzJfFW7KM/4wQcfNLVb7SlleOTIkbZeKF83sy80lXTeyU9Bja8JasSIEZbYq1BJRUWFTQiqgZN2ioqKbAOkTpA5oWtx1qbq9ttvt0rU6gy//OUvgbjUQFrszgztXX755UBcJwqSkMj69ettw6SFds2aNfY8LD0YV206YcIE+54GR5o2UpBs7CVDd+3a1QZ8pmytDYkW7aZW4W0pFLYsKiqycg9qW4V5ysvLzQ7VourZs6e9T31X43XRokU2Maq+VllZmW1EFCrKxr3QRl6bh8wnKKhEh/pvWVmZfS+zKjrE7Z/W50dCstAo1DFnzhyeeeYZAEtE79Gjh7WdQu3qt8OGDTPHJpvPTvw0tOBmJtRrEyWeeOIJCw/95S9/AZK5Je0bKUjmDdk4efJkrrnmGqBhKPC0004DknVRa03a+qgczqKiIrtWzRGaM1avXr1TSkwURbaGyCbtFUaOHGmChRy15pxb0jVjO47jOI7j5Bg5p0yJTO9eO1AlZA8YMMAk3cZlE9KMpHZJnEoEzQwj/PWvfwXgvffesx37pEmTALjooouAdKpxXbp0MYVCx8zlaVRXV5tXqyTQbdu28Y1vfANIvAd5KxUVFVZYLQ1lEDJRf1N7yYNfvny5KafyBufNm2dhPpUDUL9NyxFs9UV57VVVVabCNB5jK1asMGVGys7GjRvN3hUrVgDJsyTff/99qxiuxNCxY8faoYlshT5ra2tNbZNKoT4oZQaSxNauXbtaezUuwhpCsN9Nk8KR+bwySOaad955xxRUlZWpqKjYqZ9KtTnllFNSq0g1RoccICmToDB8YWGhKWxSRtMaAtsV6mNqixCCjR+VKxk6dKglnGue1dhMG7r3F154oYUkFUbWOg/slGQPidoq+5Vs3r9/f0t7UbpQc+LKlOM4juM4ThPIna33DuQ1KW/jgQcesHwG/WzmzJmWJKtYf1qTIjNp7MG//PLLQJyTIo9YOSldu3blO9/5DhAn3EN6j7lCfL3KwZAXPHPmTCBWYVS6IjOGr/i/2k7KzpAhQ/b5+UktjTx+KTlS3w4++GBTXzKfg6Z7oZwVJZKOHj26RbynvUUKzXPPPQfAnXfeafkmGmNSr5YuXcqTTz4JJIph5nPr1HelBixcuNCUOz0Go3PnzpY7mC1l4MMPP2TevHlAcs0aWx07drQ5RQpG9+7dP7H0yubNm+1vyMY0PIpEbaJcReVJbdq0ybx95fstWbLE1GShR1epT6cZ2aPDEa+++qod8lEuYL9+/exRMZpnchG1R2lpqakwOqwFiYosdVklLtL6GKsDDzzQCowqh1i5wevXr7f205gKIdi8qT6rr1v6MEjObaY0+P/whz8AseSXWWUb4mRRncQ45phjADj++OOBlpH3moP6+nrmzJkDJAvxU089ZT8Tuv5u3bpZaEGnbtJMUVGRDVy1oRaskpISOwV1zjnnALFUq4lBg0IhlF095Dot6DmJCmVpIe3du7fJ7Uqsnj9/voUefvWrXwHJItevX7+sT+pRFNlDt/Vg2NLSUpuQtMHITAzVya6f//znQNxfFYZvXDl88+bNNkFqw9ynT5+sTewaZzNnzrTDD9r4anN46aWXWn9U+KG2ttY2hVqktUkuKSmxPqAQWbY3U/X19XYIQO2qsHT37t1t3Mn5WbZsmbWZEuuzUZV+X9GTIV555RUgnneUpKx23bRpk7VrttunObjpppss2Tqzhp+cI4072dy3b9/UHXqB+No1NzTeCG3bts1s05qQ+aQN2aiDIuXl5TtVR29O0nf3HMdxHMdxcoicUaYk1Sq8pyS0mpoa8y60yy4rKzM5U7WYxLhx41KZWLh69WoLf9x8881AEuYoKCiwZF8d1T7uuOMaPJ8w7dTW1lqbqKSDJNooiigvLwcaKodKplT7yjtet26deSlpCzNIkdJBAYXCxo4da5/Lux81ahSPPfYYgD3v7o033gDi0gJ6f7ZCmRs3brRwgOjdu7eFt9QnRbdu3cyrV2Lz2rVrTW1T+0kBKi0ttXafOHEiACeccELWEpqlKm7YsMFCeQqhjxs3DojDWyrLIQVt+/btpiar/TITY+VZp0XxWLJkiT3vTPdd97xLly707dsXSNprxowZZp/6ZNqO0u8KXb+SzfWMtrVr11qkQn2zqqpql3WZcgUpLloX16xZY+uh5o+2bdtaGoHqu6lf19bWpvYggcai7NDcUl9fb+uAojQlJSV2L/R+qf+Zz19sCVyZchzHcRzHaQK7lWhCCH2B/wv0BCLgriiKbgohHAD8FSgHlgIToyha31IX+u677wJw/fXXA4lH0a5dO6u2rBg/JLvXe++9F0jipps2bWqQl5NtpNbMmzePa6+9FkgKVypHaNKkSTvtqGtqaiwHJxdo27atqU7Kq5H33q5dO7NFOSpFRUUNlAJIPI0OHTpw6KGHAkkeShoS0evq6kyZ0rWrUGnnzp3NRilt3bt359hjjwXg/vvvB5KSAurf2aSqqsoOQ8hrP/DAA00RVY6FftatWzdLTlfOUPv27c2zFEqMPfzww+1vqHJzNst6aI659dZbLVn8vPPOA5K8xKFDh5o3rGsvKCjYyatfuHAhELej/ka2c1LUltOnT7c8oi996UtAko9SUVFhqpP6YHFxMd/+9reBRAFIw3jbHTq0c+eddwKJQnHLLbeYWqg2eeqpp3JamdJ8o/asqKjYZUkO5TeqqK5+b9OmTanNg1O7qVSHcqG6dOliJXKGDRsGxMrU/PnzgWQMap1Zv3692d8SJXX2ZHTXAt+NomgIMAq4OoQwBLgGeCaKooOBZ3Z87TiO4ziOs1+xW2UqiqJVwKodn28OIbwD9AbOAT6/421/BJ4HftgiV0nyzDbtSrXr7ty5sylS8g4zY6nyrh544AEg9sBUFFDH0bOJ4rtr1qzZ6YTJVVddBTT0LJR3UVtbm3VPd28IIVjRTZ2CksdQXFxsBUv1vRCCtbU8Rp1u7NevnykYUqbSQHV1NS+88AKQeHxSF4cOHWoev9TI6upqnnjiCSBR5PT+kpKSrHv/7du3t/urMh0bNmzY6USM2qeystIUKalRVVVVZpMUmsx7MnbsWCAdpUt06q6qqsr6qPqZVMVOnTrtpMitX7/elB61o3JXRo0aZfNNtpA3ftdddwHwpz/9iSuuuAJI8kyVu5apsqm/zp071+6NToOpNEKaefrpp4GkFIcePRJCsDEopS2tp9n2FM2Vmj87d+68U8HqKIosb0x9V/PPRRddlEplqr6+3qJLjZ+5V19fb6pV5ol+KbA6Yauf3XHHHaYwS3luTvYqEzuEUA4MB2YBPXdstAD+TRwGbDHU0bXR0ARRV1dnk7NuclVVld1ADRYlbr/00ksN6m5kGy2YVVVVtqGoqKgAks1h5uKlz0tLS3MqzAdJeOfLX/4yANdddx0QH8vWANCGC5JNhxZyhZAOO+wwS5LN9oYjk8rKSlt8G4eQ169fb7WxtOFYtmyZSdLihBNOAJLFLZuUlJRYHzzggAOAeBxpU6uxpY1j//79LXygxPUePXpw7rnnAokjoOTf4cOHpyrpVeHL9u3b2+ah8fPAtmzZYoceNFm/8sorVhJB9ZpU/uLEE0/cqSp6a6PQsxzKYcOG2VypVzmfdXV1FlbPfMqEnFLV9EvTuNsVmXOmDvLowER1dbUtpkpSh6SP5yKyQ+0ya9YsjjzyyAbvqaystHHZeD1N46EsiNN1NPYaV2uvrKy09UJjce7cubaWSJyQrcOGDUtHaYQQQkfgAeA/oyhq8JTIKF71dvnclhDCFSGEOSGEOTI438h3G/PdPnAb84V8tzHf7QO3MV/YH2zMZI+2oyGEYuKN1H9HUfQ/O779UQihVxRFq0IIvYDVu/rdKIruAu4COPLII/f5QXnagarSsAqwbd++3Xbj2om+//77PPvss0DiXckrPvHEE+14b3PRFBu1ax48eLCpESoZoJ14piw9e/ZsIH4mVmsdT26uNpSMrDZUUbm5c+eahKvwQRRFzJgxA0jaUIrdsGHD7Hh6c9EcNpaWltr133333UBSrXf48OEW0pKXf+utt5rapnIDKjKbqdA1F3trY5s2bbjkkkuARJm55ZZbTH1SSEEsXLjQvieP9+KLL7bP1X4qN9ASYZWmtKPSBb7+9a8zefJkAG677TYgsaesrMxUHKmKGzdu5NFHHwWS0h5SXU866aR9N2YX7K19dXV1Da4TYhVcc6WS7qUQlpaWWls/8sgjAPzmN78xuzLDgS1Fc4zFKIp2WhcUEiorK7MxqFIWNTU1rfoEieaaU0Vm6AviQz4qt6L+unbtWlNwdE/GjBkDtEwF9OawsbKy0lTixoQQTBGW4lRbW2tqslCfnTBhgs09LcFuR0SIe+Q04J0oin6f8aMZwJd3fP5l4MHmvzzHcRzHcZx0syfK1BjgP4A3QwhK8PhfwC+B+0IIXwU+BCa2zCXGSM34yle+AmCPXqmsrOS73/0ukMSLO3XqZAl58rh0hLJfv35Zz2HIRNdcXl5ux49vvPFGAKZNm2bvkTKlfKOzzz479XkLjVEekdQXPU5m9erV5ilmPkJHbSiV5uyzzwbiAphpKYCYSUlJCaNHjwbi5GpI1IsXXnjBCs6qLdu0aWPv+8EPfgAkSkZa2lZe3QUXXADE6pOev9dYmcp8vxStQYMGceqppwLJwYO0ohywfv368cMfxmdp1C7f+973gDjv73Of+xyQ5IpVVlba/dHPVAwx27ko27dvt/6m1zVr1tjYE5nevxQpHS2HRGmTmpx2CgsLLUdKc4Xm03Hjxtn3lEPUq1evVK0Le4vyvZRHu3z5cks2l4pYXFxsypXyc1ViJq35Yp06dbK1X3aoH2/bts3mINlVXFxsY05K46RJkwA4+eSTW7Qc0p6c5nsJ+KSZ/cTmvZxPRsm7Sh5Xou9bb73FfffdByQybnV1tZ1C0kSe+XW2J7hd0adPH+s0qpt1xx13APFkoE6vDpVryeeZqAqvJGZIBogeRhpCsLaTzePHjwfS+1BOSEJZU6dOBbBw88KFCy3xXImhJSUllpytOilpO1GksaKw6pQpU+ykmk6wKeGzoKDAZHT15e7du6dmY7g7dO/POussq1On026PP/44EE/QctAUmi0vL7e+qlB2Wmxu27athZ5V8+ypp56yjb1eMw+7qM0151x55ZWcf/75QMvU52kJQgh2ivKyyy4DsLSB6dOnmx3aVFx77bVZrXHWVNTvrr76agAmT55sYd3MEJgO7qgvqOZiWvprY8rKyuywwKWXXgokBylqampsE6U+26VLFzupqg3zhAkT7GctSbpmbsdxHMdxnBwjfRLNbpCqIVn9tNNOs/BYpnSr0JBkPSVrp3UHXlhYaCGfBQsWAIlHsXXrVgsbnHzyyUD2wwdNQW0gm9q0aWMessII5eXlHHLIIUBSUiGNdVAaI9tkh8J+W7ZssSTezMrZudKOuubevXubWjNq1KhsXlKLUVhYaCECqcRSxNesWWNzkNquqKgotfNKQUGBhR6l7o8dO9aej6nr1uvAgQMtPKb3Dxs2LJVh9d2hUheaMzWfTJkyxeqaKXXgzDPPTN1zPvcG9cVvfetbQFxDUWq/flZcXGwlO6TSpH3+KSwstDZSGP6MM84A4oNm6rean4444ghrZ60XrXVQy5Upx3Ecx3GcJpDubekeoJh3Jtp95xpSLuTx61g9JHY2LsSWy8grOuaYYyynTaUCunTpYjanLY9ob5CN8qqc3EKer5SMzOd/5gqND+EMHjzYynTkM7JbeUE65HLFFVfslGsUCn/EAAADpUlEQVTTWupFS6NITD61r8beKaecAtDgGYqNldVsKsS5u0o5juM4juOkgJxXpvIJ7aoV89Vpofr6+p1iw/lEmzZtzIt0BcdxnOZEc2a+qE/7K1oD05q/55upFJP2zuM4juM4jof5HMdxHMdxmkTQ8clW+WchrAEqgbWt9k/3nW40vM7+URR1390vhRA2A4ta7Kqal722McfbEPLfxj3tp/uDjT4W04OPxU9gP7Exr8citPJmCiCEMCeKotQfSdvX68wV+yD/bWzKdbqN6SHf+ynkv43eT1vud1uTfO+nsO/X6mE+x3Ecx3GcJuCbKcdxHMdxnCaQjc3UXVn4n/vCvl5nrtgH+W9jU67TbUwP+d5PIf9t9H7acr/bmuR7P4V9vNZWz5lyHMdxHMfJJzzM5ziO4ziO0wRabTMVQhgfQlgUQlgcQrimtf7v7ggh9A0hPBdCeDuEsCCE8K0d3/+vEMKKEML8HR+n78HfchuzRHPZmFb7IP9t9H7qNjb6O3lt347fcRuzRHPaCEAURS3+ARQC7wMDgTbAP4EhrfG/9+DaegFH7Pi8FHgXGAL8F/A9t3H/sTHN9u0PNno/dRv3F/vcxvyxUR+tpUwdDSyOomhJFEXbgb8A57TS//5UoihaFUXR6zs+3wy8A/Tehz/lNmaRZrIxtfZB/tvo/XSvyHcb890+cBuzSjPaCLRemK838K+Mr5fThItuKUII5cBwYNaOb00KIbwRQpgeQuiym193G1NCE2zMCfsg/230frrf25jv9oHbmBqaaCPgCehGCKEj8ADwn1EUbQJuBwYBhwOrgN9l8fKaBbfRbcwF8t0+cBvJAxvz3T5wG9kLG1trM7UC6JvxdZ8d30sFIYRi4pv531EU/Q9AFEUfRVFUF0VRPfC/ieXKT8NtzDLNYGOq7YP8t9H7qdu4g3y3D9zGrNNMNgKtt5maDRwcQhgQQmgDfBGY0Ur/+1MJIQRgGvBOFEW/z/h+r4y3nQe8tZs/5TZmkWayMbX2Qf7b6P3UcBvz3z5wG7NKM9oYs7cZ6/v6AZxOnC3/PnBta/3fPbiuY4EIeAOYv+PjdOD/AW/u+P4MoJfbmP82ptW+/cFG76du4/5kn9uYPzZGUeQV0B3HcRzHcZqCJ6A7juM4juM0Ad9MOY7jOI7jNAHfTDmO4ziO4zQB30w5juM4juM0Ad9MOY7jOI7jNAHfTDmO4ziO4zQB30w5juM4juM0Ad9MOY7jOI7jNIH/D0Kmvu8dwaT0AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Class Label 9\n"
     ]
    },
    {
     "data": {
      "image/png": "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OQD89re/BWDjxo384he/AFI5Q1IUN2/ebPlUUnv22msvU3yUO5htZeqzzz7jwQcfBLDcxttuuw2I+6u8W3mPxx57rOXXXHDBBUBK8XjttddMpZR6UFZWZm2p/p0LZUpq4E033QTAzTffDMTtM3HiRADz/N9//33z8CdMmADkfty1l6VLl3L33XcDqchA9+7d2XvvvQEsn01tX19fb7mPSVOmtC7885//BFLK1OrVqznzzDO3+t61a9davuZzzz0HpKIaSVBqdhTNH9dee631Qf3fo0cPU3J0kEnt2KtXL2vbyZMnA6l1JZt88MEHABaduummm2zNu/DCC4H4IA7EeXuaWzT+3n//feu3Dz30EJDqlyeccIL1484gMZspyf3Nzc224VFy7ZAhQ2xTJCm2d+/eQLxYqbPodNsVV1xhoQJ1EC3EZ511liWOJo3ly5cDqc2UQgwjRowwu/Xe1NXVMXjwYABL4k1PTh82bBiQuyRKbQwfeeQRAH72s5/ZqcNrrrkGwDr2hAkT2kykljx92GGHAan+0LVrV2vz8847D8DsTQraCGsC//3vf29hWbXTH//4R2sfbab0eV1dHaNHjwaguroagH79+tmEr/6fLTR+pk2bZsny2uSpb15wwQXm5GjSXrJkicnr2gjKxuXLl9umRRvm8vJycwRyFd6rr6/n1ltvBeBPf/oTkNq8Xn311ba4yo5Zs2aZ46eJX6GFfEkvmD17NgCXXHKJjbNvf/vbQGyDnAL1Xc1NJ510krV50lDf0sZBm/OLL754m3mxZ8+evP3220DKMVOoSYc9koyckl//+tdALDZofdBmYt26ddZP9d6IWbNm2fycq5SQhoYGm1umTp0KQFVVFZdddhkAxxxzDJBKhSgtLbV2VP/s3bu3rStvvfUWgB3euueee7jooouAznFCPcznOI7jOI6TAYlRprR7DiGYZ6Qk8mHDhnHwwQcD2G5b35Pu+Um9+tWvfsUll1wCwPz58wH4z3/+A8S7X3lcI0eOBJJzBPbDDz8EUgmgCmHdeeed9v7Io6ioqGDRokVAShKVd9+/f38LReSKv//97wDceOONQOwJyCvQs0l5+Lz3X6/Lm5K9n3zyyTZhFCkCuSSKIp599lkAXnzxRQAL40FKrbj88suB2AOUpy9lSqHNdevWmb16rX///qbSZav8h9px+vTpAMycOdOOHCv0rLFZVVVlHp/G5YABAyyEp7CYVMva2lrzKDWejzjiCKullStF4Oabb7YyHEp6VTuWlJSYbQoxDB482Dxpec1TpkwBUjXgkso999wDxGo+xKFnhd+lfjY1Ndn7MG/ePCDVvr17906sMqX5UP3tW9/6FrD1miGVsbi42NRHobGZZGTbtddeC6T62yGHHGKHIjQmW1pa7D2R+qYwX3l5OcOHDwdyF65dunSpHWbRGnjJJZeYHXquttYLtWlxcbGtm1LEVcoEUuPZlSnHcRzHcZyEkRhlSrvJPn362LFv5Z2UlJSYl9o6GTA9nq+EuSFDhpgKotwpeR033HCDxYS1O1VeVa7R7lo776FDhwLx0XMd95QyVV1dbaUFlEcjrrjiipwm2qdXrJdXcMYZZ9ghgO0pUkKeoXLJ5P3X19ebByY1MpelH/Sc06dPN9VJ+VHqr5dddpklTqqfrlq1ylQn9fWXX37ZPtfXvvOd7wBxMre8x2zk4mzcuNGKNOr4+1577WV5REq2lnLYVt5bUVGRvT/KQZHKtWLFChv3yrs6/fTT7TBCtpO4lbz71FNPWVK1FCnlWdbV1Vlisrz89KKWUpeVw5JUZUpjSuqilIpTTz3VDvls3Lhxq69BqtDuj3/8YyAuX5EUZb81ahOhqAakDjBJNW1qatpGmcqHMhdSwGWH1JuxY8eaSpqOcpPVd5944gkArrrqKislkKs8v7q6OssP1Xu/5557mhK+I/1s8+bN1u4azyrnMXTo0E4tcpzMUeA4juM4jpMnJEaZ0m743HPPtR2oTph0797dvN+2ds2tFZ099tjDlCz9r9jypk2brLinCkUOGjQo51fQNDc3WzFDefLyHhYsWGAqlU4o3Hbbbbbjbl0+/5BDDsmpUrN06VJuueUWIOVh9O3b197vHfEwoigyL19HXKX2FBUVmbqV7SsD2kKqzUUXXWQxealQyp0pLy83pUWqBaQ8xWnTpgEplbGiosIUAp1iGT16dFa8RqmKf/jDH6wdpbCdc845ptJ8kSIl6uvrzftVeQGdroqiyFQoXQs0cuTIrHvGys9QAdh58+bZa3oWtWuXLl1svCmn7ZprrrHXhL6/paUlkcqNFCYpASppsd9++9lcKGWqpqbGch/79esHpBThzjxqnimrV68GUvOj2jI9L1c2Tp061ZRTkfTyFq+//rqtkVKhTj/9dCAV6UmntrbWCudeffXVQErJmjx5cs5PuR9wwAFW3mju3LlAPDaluqkd25pv0sek1kiVolEe1imnnNKpbZqYzZQoLy+3RVeTellZmb0J2mikDwx9n970xYsX20J87LHHAqkJvKGhwX6HFq76+vqcb6aampps0dERcm2uZs6caZWytSlcs2bNNsdbNdHlelDU1NTY+60j8pWVldscr25rkdEGsrq62kJMkrLV5ukbxVxe5KwFSQO/pqbGkna1iUq/t03hEtlx4403bpUcCamJYtiwYZx//vkAViIhW5sMhRcffPBBk8w1JktLS22jof6njVYIwSY13aN1zz332AEJ1ZDROK2qqrLaY1/96lftd+QKbV7Tq7Ir9KN+WVRUZEm7mrRDCLa5UJhWyen77bdfIsNFGoM6FDF27FggnnNV30zccsstFoa++OKLgdQGP8loHtW8o/9DCDYW1b4bNmywDUiSKoG3hQ4BTJ06lYcffhhItYvGZG1trc0lct5uu+02q+SvTaRKgGh855KKigpOO+00INUuy5Yts02xhBGtc5CqYK/DLR9++KHdIKJQtt6HysrKTk1/SZ7L5DiO4ziOk0ckTpkKIZhnoKTr5uZm8wbT7+WB2MOSWqMw0IIFC8y7lkIiDzuKItudKtE9CXLuunXrrLK0kGeliq6Q8nhbWlpMoZEaICUjF5Vr06mpqTFvXB7Q5s2brUK7pGUpFC0tLbz33nsAVjhv7dq11q5qH3mKZWVlOVcSoyiydrn++uuB2PORpy/VLV1pkeKhoqVNTU3WhlJ7FDo76aSTrP93ZtJkW+hZampq7H1O9/Jbj0X1v4aGBqturuTP6667ztpZ6OduvPFGK3+Sy1BYelkGiAvMqkq97qBT4n95ebk9qw6uDB061FTKV155BUgpWevXr0+kMqUit2eccQaQ8vA//fRTK3KYfjekVBslbidhztweaieFebQGFBcXW3hSfXPQoEGmErdeY5KC1jIdGpgxY4bN9RqDr732GhDPIwpDKwLzyCOP2HwsBejQQw8FklNcVlGVs88+G4gjFIrQaP2QqtrY2GhrufYMH330ka2RUo51YGTPPff0BHTHcRzHcZykkjhlCra+ewdilUI7bsV/5TWEEMy7l7qxceNGUzEUZ00v8qmd6ueVW8gFtbW19jzyKPRcPXr0sOdXQcN58+bZjl0emDzgXCWfy2NIV/+kUDz++OPm6SqWrbacPXs2o0aNAlK2FBUVWRt//etfB1Ltm35vnzytlpaWrCo4TU1N5vFJQevevbs9l/Iz5A3fcccdlqchLzL96LLeO+VaHXbYYfTt27ezzWgTeeuXX365laOQrXfddZd5sWpPqRrp+YtSt7p27Wp5Y1K3Lr30UiD2ipNUOkDj7YorrjDVOj1XCuI5Q+2mcfboo4/ax7JfuSttJQInAakvRx11FJDK9Vq2bBmTJk0Cti75oXGmAwP5gPqg5hvNl2edddZWObcQq+XKWdX6kxS1BuJ+pQLUKqTb0NBgapr66VNPPQXE9qRHYyA+LCB1XEWOk3CApy3UBgMHDtwm8bz1FTKQ6qvp403vlwodS4XrLBK5mdKmQNLd3XffbRLnySefDKTe2G7dutkkqIWspKTEOk3rquIhBE499VQgtTFJwqDp16+fJQNq0GtRa25uNnt1v9Rzzz1nHUgJeapHlCvSK5ZrwVGHr66utjaUNK1J7tJLL7XFSxvo5uZma0/ZrIHyySefWI0wTRjZDhOlb6a06du0aZOFwFSLSRutkpISW3D1fwjB2li2aZFTuDAXKAzbpUsXjjvuOCB1g8Bnn31m9/RpAhddunSxsaR2Ly8vt36q0IomyqRWzi4uLuacc84BUnOKJvSWlhbrc5pjevXqZRN3+klNSN7lv0LtpEVVYbv+/ftbuoRC7qtXr7Z+maTN7/bQ/K7kbIXlQwjbbKbeeOMN2wDnyonZHjrcohs8nnjiCXNodBJVByEmTpxoKQOaG0eNGmXvgQSFpG72RbpT3Zr0dVs2Tpo0yRx4OfRaUzp7vvEwn+M4juM4TgYkUpmS537IIYcAcUL5k08+CWCJoVImLrvsMlNt5F2l72SVGCoFoKioyHaouTxW35qKigqTIRUO0c67ubnZvEWpNPKYAb7//e8DyanYu/vuu9tRayUNRlFk4SB5/VKvhg8fbtWJ5X01NDTYUXopIXpf6urq7J4tJdJmW10sLS21ficVadmyZVupiZAqjVBSUmLeoPr3okWL7PtV/kBV4tNLKmQbvZennXaa1d658MILgfjZpbYpxCBb33zzTSuJoOTPuXPnmsd/4oknAqm7/PIhibmtdlC/Xbhwob2m4+pqT5VZSFoSc2s0j6oPV1VVmYKsNmxoaLCE4CTWzPo81E7f+973gFQ5h02bNlnf1aGf+fPn23uRy7H3eYQQ7BCE7p39yU9+YoqpohPpCemKysyYMQOI1TetI5pnC42SkhLry7JVNRo7e77Jn5HhOI7jOI6TQLarTIUQ+gJ3AVVABNwaRdENIYRewHRgX2AZcEoURes/7/e0BxUSGzdunMWxlZMiRowYYYnb8ixmzZpleVTpihTEO1cVCEyal6XnaZ0QH0XRNipaeXm5vXb88ccDycj9gtgTOProo4HUPXyQah+9pqP/AwcONG8wvTBn68Tl9DaUx5+rvJuysjLOO+88AL7yla/Y80m10bPrmRcvXrzNwYA777zT+rMSe9PvD8s1lZWVbd7vJa9W3rBU0h49emylmELq0IB+X/rP5StSJNVW06dPNwVP7Z7r8iQ7S3qpmdb9dJ999jHvPttlOjoC5QWl5yUqn0Zz0YYNGxgzZox9PYnouXQn5vZQm6lwdWNjo5WJ2NHfkY8o11rtrTy/zl4fd2Q3sRn4SRRFBwJjgf8KIRwIXAk8E0XRYOCZLZ87juM4juPsUmxXmYqiaAWwYsvHtSGEt4C9ge8Ch2/5tjuBWcD/6ciHU4zzgAMOsJNuOiWkgnm77777NnkJvXv3tjundNpBJ4oqKioSUQphZ0iPf+t+s9raWssF0HuRFEpLSy0HSGpEQ0ODeVY61SXvvS1vt6mpyU6LqQ2V/1ZZWWlKZS7zG3RKRKdrYOvyEJA6BTZ69GhTadQ316xZs9WxZUjuUeW2ULtpPK1bt86uftBJx+XLl1suoPppEnNS2oM838mTJ9vpTeXF6VRVvtHY2GhzzaOPPmqv57uamE5xcbHNS1pjGhoaGDlyJJC70jIdTfqJd4jzjXUHZlLyazsDzamaSxW56mx2qteEEPYFRgIvA1VbNloAK4nDgJ3CgAEDduqoeM+ePbepsi122223xITDtocSe6urqy2JUEnc6RuWJCbyaqOhkGp9fb0tulqEPm8TBfE9dqot9uyzz9rvgDjs27rSeC5J70+tbUq/F0rPqoTs9evXW7hBAz8fJ3Jd6vvuu+9aaQCVCqioqLDE2S/aPOcjavfi4mLr20pyzjeHTXPNkiVL7G4+vTZlyhQrM1AoaJ5RWLpbt252aKDQULL98OHDLSWkUGlpabGDS6qmrlImnc0Or0QhhErgf4EfR1H0afrXongrGH3Oz50fQpgXQpgnr7XQKHQbC90+cBsLhUK3sdDtA7exUNgVbExnh9zgEEIp8UZqWhRFD2x5eVUIoU8URStCCH2AT9r62SiKbgVuBRg9enSbG67OIF0RgJSn+IMf/KDDvcaOtlHKxfTp04E4iXfatGlAKow0bty4rFXqbY99eia9/127djX5tXUF25aWFvOCdfv3Sy+9tM3t31K7pkyZ0uHVbDu7n9bX11uJB1WbbmxsZNCgQUB2qi53tI2qij1nzhwgPhyij1XtvVevXqa6qUBkZ5KL+aaystJCRDpk0Vl0ln1SF1999dVtvlZUVJTVpOxstKEOilx11VUAnH766XzjG9/ojD/VJtmwUWvF/fffD8SJ6IoUZINcjMUPPviAuXPnbvWaSiR0NttVpkI8u98OvBVF0XVpX3oYOHvLx2cDD3X84zmO4ziO4ySbHVGmvgGcCVSHEOZvee1nwO+AGSGEHwDLgVM65xHbh5QpJYKqwF6Sc1Kk1MycORPAchceeughy5WS53vEEUdYTDgfKCoqMk9J/ytf4eOPPzYlQ3lSTz31lN1RqByrww8/HIhj/0kvhihU1uGFF16wK1mef/55IG5v3RuVXkIi6Sh37emnnwbgscceA+L7F9evj6ujSP098sgjrXxFW2UWCgUpU+qr6feGJRmNRXnvy5cv57777gNS5TomTpyYiNzEjkQKnOwaM2ZMwSVlq021dpxwwgmJzK/tCBTZmD17tuUXt76GrLPZkdN8c4DPiz18s2Mfp2NoaWmxEylKvku/gFULXNLQqTVtLB54II6obtiwwTaBOsW277775l0tG4WwFMZUSO+1116z019qp48//ths1qZx4sSJQHLvzkpHdqia9Ntvv82LL74IpBaw9PbLl81hfX09s2fPBlJ3nenzTZs2WThIYcs+ffpYOxbqRK7TUrDtgZeko0VI/XTJkiV2slT3ZeqEYqHQ3NxsJ2u10R8+fHhBbRijKDLHVI5a//798+bw1c6ijeOqVatsEyVbs3UYpHB6j+M4juM4Tg5IbswrAzZv3mwqj5KWFR6bP38+kydPBlJeWVKOakuxkCwrL7e4uNieX7WlJkyYkPfKlO7tW79+vSk5Csd27drVlCipHaqYng8310v9lHpTV1dndssDHj9+vHmNnZ24nCl69urqal566SUAOxQhGb1fv35WfVj3apaWllqoPSnjrKPp0qWLjUUl5es4dtJLJCgRWykF6TdMSFHMF9V0R2lubra5SKpb9+7dC0qZamxstBIBmj+TnOLSXrSGK2z73HPPWRqC1n7NxS0tLZ3axoXTexzHcRzHcXJA4W1ViT1geciK/48bNw6AsWPHJjavQR7ERRddBMCkSZPsdeVlSJVJz9PIN6TCKGm3qqrKvCgpNeXl5dZOugNt1KhRQDIKdW4PqYwqyllVVWWVeNXOgwYNssrS8p6SqgJImdqwYYPdmTllyhQgvo0e4oK48vTl+Q8cOHCnCu7mI6WlpZZcL0VcypS846Qhj15KsD5vbGy0Pqk2zNX9l51FfX29tZPu49N6USi88847lgen+VZ3ahYKURSxYkVcN1zjrW/fvtamOrAktbizSf6q5DiO4ziOk2AKUpkqKSnhoIMOAlIxcXnWPXr0sKtmkpbDIcVF6lOhXm8g9UV3tQ0dOtQ8Y+VORVFkp7/yQYlqje6fO/LII4G4/ylXTypUFEXmESfdRh0bHz9+vJ28XLVqFQCnnBJXRdmwYYONKSmMvXv3Lpi7+D6PsrIyK4aoPpv0OxaVVyJFWGNywoQJDBs2DEiNz0LLtamsrOTcc88FUvZLQc53pObPnz/fxqDWwKSq3pkg5fe4444D4siTFFWNRX1PZ8+xhTVKtlBUVGSTv+T3Qj0SWggUFRUlfjPRXrQQlZSU5HVoNv2YsSbn1heIRlFUsO34RYQQLGStewizVdumvag9VcJC7TZ27FgL4ybN2ewoioqKLHRZaCFMOaWHHnqopbhoU1Foa2AIYRtHLVuXGrfFrjfzOY7jOI7jdCAhm5V6QwirgU3Amqz90fbTm62fs38URdt1Y0IItcCiTnuqjmWnbczzNoTCt3FH++muYKOPxeTgY/Fz2EVsLOixCFneTAGEEOZFUTQ6q3+0HbT3OfPFPih8GzN5TrcxORR6P4XCt9H7aef9bDYp9H4K7X9WD/M5juM4juNkgG+mHMdxHMdxMiAXm6lbc/A320N7nzNf7IPCtzGT53Qbk0Oh91MofBu9n3bez2aTQu+n0M5nzXrOlOM4juM4TiHhYT7HcRzHcZwMyNpmKoRwdAhhUQhhcQjhymz93e0RQugbQnguhLAwhLAghHDpltf/J4TwUQhh/pZ/x+zA73Ibc0RH2ZhU+6DwbfR+6ja2+j0Fbd+Wn3Ebc0RH2gjEVYs7+x9QDCwBBgJlwOvAgdn42zvwbH2AUVs+3g14BzgQ+B/gv93GXcfGJNu3K9jo/dRt3FXscxsLx0b9y5YyNQZYHEXR0iiKGoF7ge9m6W9/IVEUrYii6D9bPq4F3gL2bsevchtzSAfZmFj7oPBt9H66UxS6jYVuH7iNOaUDbQSyF+bbG/gg7fMPyeChO4sQwr7ASODlLS9dHEJ4I4QwNYSw+3Z+3G1MCBnYmBf2QeHb6P10l7ex0O0DtzExZGgj4AnoRgihEvhf4MdRFH0K3AwMAr4KrAD+kMPH6xDcRrcxHyh0+8BtpABsLHT7wG1kJ2zM1mbqI6Bv2ufJEn+qAAABIklEQVT7bHktEYQQSonfzGlRFD0AEEXRqiiKmqMoagH+L7Fc+UW4jTmmA2xMtH1Q+DZ6P3Ubt1Do9oHbmHM6yEYge5upucDgEMKAEEIZcCrwcJb+9hcSQgjA7cBbURRdl/Z6n7RvOwF4czu/ym3MIR1kY2Ltg8K30fup4TYWvn3gNuaUDrQxZmcz1tv7DziGOFt+CXBVtv7uDjzXoUAEvAHM3/LvGOD/AdVbXn8Y6OM2Fr6NSbVvV7DR+6nbuCvZ5zYWjo1RFHkFdMdxHMdxnEzwBHTHcRzHcZwM8M2U4ziO4zhOBvhmynEcx3EcJwN8M+U4juM4jpMBvplyHMdxHMfJAN9MOY7jOI7jZIBvphzHcRzHcTLAN1OO4ziO4zgZ8P8B6z2sBLWvD2UAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x180 with 10 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(10):\n",
    "\n",
    "    ##########################\n",
    "    ### RANDOM SAMPLE\n",
    "    ##########################    \n",
    "    \n",
    "    labels = torch.tensor([i]*10).to(device)\n",
    "    n_images = labels.size()[0]\n",
    "    rand_features = torch.randn(n_images, num_latent).to(device)\n",
    "    new_images = model.decoder(rand_features, labels)\n",
    "\n",
    "    ##########################\n",
    "    ### VISUALIZATION\n",
    "    ##########################\n",
    "\n",
    "    image_width = 28\n",
    "\n",
    "    fig, axes = plt.subplots(nrows=1, ncols=n_images, figsize=(10, 2.5), sharey=True)\n",
    "    decoded_images = new_images[:n_images, 0]\n",
    "\n",
    "    print('Class Label %d' % i)\n",
    "\n",
    "    for ax, img in zip(axes, decoded_images):\n",
    "        cpu_img = img.detach().to(torch.device('cpu'))\n",
    "        ax.imshow(cpu_img.view((image_width, image_width)), cmap='binary')\n",
    "        \n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "numpy       1.15.4\n",
      "torch       1.0.0\n",
      "\n"
     ]
    }
   ],
   "source": [
    "watermark -iv"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
